Linux之grep命令
阿新 • • 發佈:2018-07-17
linu global 轉義 命令 點號 正則表達式grep -- ole 前三
global search regular expression(RE) and print out the line
一、命令形式
1. grep -n --color=auto ‘str‘ filename/dirname
2. cat filename | grep ……
3. grep -E ‘(str)+\.?[0-9a-zA-Z]..str.*‘
4. egrep ‘str1|str2‘
5. grep -F ‘*‘ ……
6. fgrep ‘*‘ ……
二、示例
1. grep 參數
* -n 行號 * --color=auto 結果顏色高亮顯示,一般在alias中定義即可 * -c 對結果行計數 * -i 不區分大小寫 * -v 反向搜索 * -m3 匹配行數達到3行後停止匹配 * -A1 同時打印搜索結果行的後一行 * -B3 同時打印搜索結果行的前三行 * -r 遞歸查找(搜索區域是dirname時) * -l 只顯示含搜索結果的文件路徑和名稱(搜索區域是dirname時) * -E 擴展正則表達式 * -F 純字符搜索
2. 正則表達式(grep未擴展)
2.1 單個字符匹配[]
1. ‘t[ae]st‘ 可匹配taste和test(在t和st之間存在a或者e,而不是ae)
2. ‘t[a-z]st‘ 在t和st之間存在一個小寫字母
3. ‘t[a-zA-Z0-9]st‘ 在t和st之間存在一個大小寫字母或數字
2.2 行首匹配^
2.3 行尾匹配$
2.4 反向匹配[^]
1. ‘[^g]oo‘ 含有oo,且oo前沒有緊隨字符g; google不行,gooogle可以(goo不符合,但是ooo符合) 2. ‘oo[^g]‘ 含有oo, 且oo後沒有緊跟字符g; 3. ‘3[^0-9]8‘ 數字3和數字8之間,沒有其他數字 4. ‘^[^#]\.$‘ 不以‘#‘開頭,且以點號結尾(點號轉義)
2.5 任意單字符.
1. ‘g..le‘ g和le之間有兩個任意字符,如google
2.6 重復字符*
1. ‘go.*le‘ g和le之間有0到n個字符o,如gle、gole、goole
2. ‘goo.*le‘ gle就不符合啦,起碼得是gole
3. ‘g[a-z].*g‘ g和g之間有0到n個任意小寫字母
2.7 限定字符連續個數{},正則擴展,grep中需要轉義
1. ‘go\{2\}le‘ g和le之間的字符o必須重復2次,如goole
2. ‘go\{2,3\}le‘ 重復2到3次
3. ‘go\{2,\}le‘ 重復2到n次
2.8 字符在同一行出現1到n次,正則擴展,grep需要轉義
‘360+‘ 匹配存在1個或者多個360的行
‘\(google\)\+‘ 同上
2.9 字符出現0或1次,正則擴展,grep需轉義
‘goo\?le‘ go和le之間存在一個o,或者不存在任何字符
2.10 存在字符a或者字母b,正則擴展,grep需轉義
‘google\|gooogle‘
3. 正則擴展(grep -E,或者egrep)
上面需要轉義的四個,在這裏不用轉義啦
1. ‘go{3}le‘
2. ‘(google)+‘
3. ‘goo?le‘
4. ‘goole|gooole‘
4. 純字符搜索(grep -F,或者fgrep)
‘*‘ 這裏寫啥就是啥,星號就是星號,沒有任何特殊含義
Linux之grep命令