首先,什麼是正規表達式。
簡單的說,正規表達式就是處理字元串的方法,它是以行為機關來進行字元串的處理行為,正規表達式通過一些特殊符号的輔助,可以讓使用者輕易達到查找、删除、替換某特定字元串的處理程式
正規表達式 REGEXP:REGular EXPression
basic REGEXP:基本
Extended REGEXP:擴充
grep的用法:
功能:進行字元串資料的對比,然後将符合使用者需求的字元串列印出來,以整行為機關來進行選取的,選取的結果丢棄不符号标準的行
#grep
-i :忽略大小寫
--color
-v :顯示沒有被模式比對到的行
-o :隻顯示被模式比對的字元串
-E:使用擴充正規表達式
-A #:(#為數字)附帶顯示後2行
-B #:(#為數字)附帶顯示前2行
-C #:(#為數字)附帶顯示前後2行
*:任意長度的任意字元
?:任意單個字元
[]:以内
[^]:以外
正規表達式:REGular EXPression ,REGEXP
元字元:
. :任意單個字元
[]:比對指定範圍内的任意單個字元
[^]:比對指定範圍外的任意單個字元
字元集合
[:digit:]:代表數字,既0-9
[:alnum:]:代表代表英文大小寫字元及數字,即a-z,A-Z,0-9
[:blank:]:代表空格和[tab]鍵
[:alpha:]:代表代表英文大小寫字元a-z,A-Z
[:cntrl:]:代表鍵盤上的控制按鍵,
[:graph:]:除了空格符(空格和[tab]鍵)以外的所有
[:lower:]:小寫字元即a-z
[:print:]:代表任何可以列印出來的字元
[:punct:]:代表标點符号
[:upper:]:代表大寫字元即A-Z
[:space:]:代表可以産生空白的字元
[:xdigit:]:代表16進制的數字類型,包括0-9,A-F,a-f
---------------------------------基礎正規表達式字元
比對次數(貪婪模式):
* :比對其前面的字元任意次
.* :任意長度的任意字元
\ :轉義字元,将有特殊意義的字元特殊意義除去
\?:比對其前面的字元1次或0次
\{m,n\}:比對其前面的字元至少m次,至多n次
位置錨定:
^ :錨定行首,此字元後邊的任意内容必須出現在行首
$:錨定行尾,此字元前邊的任意内容必須出現在行尾
^$:空白行
\<或\b :錨定詞首,其後面的任意字元必須作為單詞的首部出現
\>或\b :錨定詞尾,其前邊的任意字元必須作為單詞的尾部出現
分組:
\(\)
\(ab\)* ab可以出現0次或任意次
後向引用
\1:引用第一個左括号以及與之對應的右括号所包括的所有内容
\2:
\3:
sed用法:可将資料進行選取,删除,替換,新增等功能。
sed:Stream EDitor
行編輯器(全屏編輯器:vi)
sed [] 'AddressCommand' file ...
-n:靜默模式,不在預設顯示模式空間中的内容
-i:直接修改原檔案
-e SCRIPT -e SCRIPT:可以同時執行多個腳本
-f /PATH/TO/SED_SCRIPT
sed -f /path/to/scripts file
-r:表示使用擴充正規表達式
Address:
1、StartLine , EndLine
比如1,100
$:最後一行
2、/RegExp/
/^root/
3、/pattern1/,/pattern2/
第一次被pattern1比對到的行開始,至第一次被pattern2比對到的行結束,這中間的所有行
4、LineNumber
指定的行
5、StartLine,+N
從startline開始,向後的N行;
Command
d:删除符合條件的行;
p:顯示符合條件的行;
a \string:在指定的行後面追加新行,内容為string
\n:可以使用者換行
i \string:在指定的行前面添加新行,内容為string
r FILE:将指定的檔案的内容添加至符合條件的行處
w FILE:将位址指定範圍内的内容另至指定的檔案夾中;
s/pattern/string/修飾符:查找并替換,預設隻替換每行中第一次被模式比對到的字元串
加修飾符
g:全局替換
i:忽略字元大小寫
s///:s### s@@@
\(\),\1,\2
&:引用模式比對整個串
---------------------擴充正規表達式
+ :重複1個或多個前一個字元
?:0個或1個前一個字元
| :用或(or)的方式找出數個字元串
():分組
()+:同上
#printf 格式化列印
\a 警告聲音輸出
\b 倒退鍵
\f 清除螢幕
\n 輸出新的一行
\r 即Enter按鍵
\t 水準的tab鍵
\v 垂直的tab鍵
\xNN NN為兩位數字,可以轉換數字成為字元
%ns 那個n是數字,s代表string ,即多少個字元,
%ni 那個n是數字,i代表integer ,即多少個整體數字,
%N.nf 那個n與N都是數字,f代表floating,如果有10位數,但小數點有2位,則%10.2f
#awk:
以行為處理機關,以字段為最小的處理機關。
awk的處理流程
1.讀入第一行,并将第一行的資料填入$0,$1,$2等變量中
2.一如條件類型的限制,判斷是否需要進行後面的操作;
3.做完所有的動作與條件類型;
4.若還有後續的“行”的資料,則重複上邊1~3的步驟,直到所有的資料都讀完為止。
變量名稱
NF:每一行($0)用于的字段總數
NR:目前awk所處理的是“第幾行”資料
FS:目前的分隔字元,預設是空格鍵
注意:awk後續的所有動作都是以單引号''擴住的
awk'{pattern + action}' {filename}
pattern表示awk在資料中查找的内容,支援正規表達式
action 是在找到比對内容的時候執行的一系列指令
{}不需要在指令中始終出現,他們需要在特定模式對一系列指令進行分組
awk的運算邏輯符
>
<
>=
<=
==
!=
#dill cmp
#dill :以行為機關來進行比較,
#cmp :以字元為機關來進行比較
本文轉自 陳延宗 51CTO部落格,原文連結:http://blog.51cto.com/407711169/1148239,如需轉載請自行聯系原作者