[ grep簡介: ]
grep是用來過濾含有特定字元的行, 能使用Regex搜尋文本, 它在資料中尋找一個字串時, 是以正行為單位進行資料選取的.
用法: grep [cinvs] 'pattern' file
例如: grep -n 'bbb' aaa.txt --color # 從檔案aaa.txt中搜尋關鍵詞bbb, 並顯示行號和高亮顯示。
[ 常用選項: ]
-c:只輸出匹配行的計數。
-i:不區分大小寫(只適用於單字元)。
-n:顯示匹配行及行號。
-s:不顯示不存在或無匹配文本的錯誤資訊。
-v:顯示不包含匹配文本的所有行。
[ 正則元字元: ]
grep可以結合Regex使用, 下面介紹一些常用的Regex過濾字元的用法。
\ :逸出字元,忽略Regex中特殊字元的原有含義。
^ :匹配以某個字串開始的行。
$ :匹配以某個字串結束的行。
\<:匹配單詞的開始。
\>:匹配單詞的結束。
[ ]:在[]內某單個字元,如[A]即表示 A 符合要求。
[ - ]:屬於[ - ]所標記的範圍字元,如[A-Z],即A、B、C一直到Z都符合要求。
. :表示一定有1個任一字元。
* :前面字元可以出現任意次。
? :前面字元出現0次或1次。
+ :前面字元出現一次或多次。
[ 正則樣本: ]
1. ^表示行開頭
grep '^bbb' aaa.txt --color # 從檔案aaa.txt中尋找以bbb開頭的行。
2. $表示行結尾
grep 'bbb$' aaa.txt --color # 從檔案aaa.txt中尋找以bbb結尾的行。
3. .表示單個字元, 它可以匹配除分行符號之外的所有字元。
返回欄目頁:http://www.bianceng.cnhttp://www.bianceng.cn/OS/Linux/
grep 'bbb...' aaa.txt --color # 從檔案aaa.txt中尋找bbb後面含有三個字元的行, '點'可以匹配空格。
4. * 表示它前面的那個字元可以出現任意次
grep 'bbb.*' aaa.txt --color # 從檔案aaa.txt中尋找bbb後面有任意個字元的行。
5. + 表示它前面的那個字元至少要出現一次
grep -E 'bbb.+' aaa.txt --color # 從檔案aaa.txt中尋找bbb後面至少會出現一個字元的行。
6. ? 表示它前面的那個字元可以有也可以沒有
grep -E 'bbbc?' aaa.txt --color # 從檔案aaa.txt中尋找存在bbb或bbbc的行。
注意: grep不支援 + 、? 這兩個元字元, 如果想使用, 只能使用擴充的grep (egrep 或 grep -E)
7. [ ] 表示匹配一個字元, 出現在[ ]裡面的字元都是或的關係
grep '^[Bb]bb' aaa.txt --color # 從檔案aaa.txt中尋找以Bbb或bbb開頭的行。
grep '[0-9]' aaa.txt --color # 從檔案aaa.txt中尋找含有數位行
grep -P '\d' aaa.txt --color # 從檔案aaa.txt中尋找含有數位行, -P表示使用perl的Regex
\d表示數字, \D表示非數字
\s表示空格或tab, \S表示不是空格或tab
\w表示任一字元(大小寫字母、數字、底線), \W表示不是字母、數字、底線。
注意: ^ 出現在 [ ] 外面的話表示'開頭', 如果出現在 [ ] 裡面的話表示'否定'
grep '^[^Bb]..' aaa.txt --color # 從檔案aaa.txt中尋找不是以B或b開頭, 而且後面還有兩個字元的行。
8. \< 匹配單詞的開頭
grep '\<Tom' aaa.txt --color # 從檔案aaa.txt中尋找單詞以Tom開頭的行。
9. \> 匹配單詞的結束
grep '\>Tom' aaa.txt --color # 從檔案aaa.txt中尋找單詞以Tom結尾的行。
10. 匹配某個單詞, 而不是某個字串的一部分
grep '\bTom\b' aaa.txt --color # 從檔案aaa.txt中尋找含有單詞Tom的行, 如果是aTomb之類的忽略掉。
11. 用\(\)做標籤, 後面想引用就用\n (n是一個數字), \1表示第一個被引起來的
grep '\(tom\)...\1' aaa.txt --color # 從檔案aaa.txt中尋找tom, 且它的後面有三個字元, 然後還有一個tom的行. 如: tomxxxtom
12. \{n\} 表示前面的字元要出現n次
grep 'tomx\{3\}' aaa.txt --color # 從檔案aaa.txt中尋找tomx, x要出現3次, 如: tomxxx
grep 'tomx\{3,\}' aaa.txt --color # 從檔案aaa.txt中尋找tomx, x至少要出現三次, 如tomxxx 或 tomxxxx
grep 'tomx\{3,4\}' aaa.txt --color # 從檔案aaa.txt中尋找tomx, x出現3次或4次, 如tomxxx 或 tomxxxx
作者:csdn部落格 zdp072