歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> 關於Linux >> linux-shell腳本命令:grep命令簡介

linux-shell腳本命令:grep命令簡介

日期:2017/3/3 15:54:31   编辑:關於Linux

[ grep簡介: ]

grep是用來過濾含有特定字符的行, 能使用正則表達式搜索文本, 它在數據中查找一個字符串時, 是以正行為單位進行數據選取的.

用法: grep [cinvs] 'pattern' file

例如: grep -n 'bbb' aaa.txt --color # 從文件aaa.txt中搜索關鍵詞bbb, 並顯示行號和高亮顯示。

[ 常用選項: ]

-c:只輸出匹配行的計數。

-i:不區分大小寫(只適用於單字符)。

-n:顯示匹配行及行號。

-s:不顯示不存在或無匹配文本的錯誤信息。

-v:顯示不包含匹配文本的所有行。

[ 正則元字符: ]

grep可以結合正則表達式使用, 下面介紹一些常用的正則表達式過濾字符的用法。

\ :轉義字符,忽略正則表達式中特殊字符的原有含義。

^ :匹配以某個字符串開始的行。

$ :匹配以某個字符串結束的行。

\<:匹配單詞的開始。

\>:匹配單詞的結束。

[ ]:在[]內某單個字符,如[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.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的正則表達式

\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

Copyright © Linux教程網 All Rights Reserved