語法: grep [-cinvABC] 'word' filenameide
-c :打印符合要求的行數spa
-i :忽略大小寫crontab
-n :在輸出符合要求的行的同時連同行號一塊兒輸出ci
-v :打印不符合要求的行字符串
-A :後跟一個數字(有無空格均可以),例如 –A2則表示打印符合要求的行以及下面兩行it
-B :後跟一個數字,例如 –B2 則表示打印符合要求的行以及上面兩行class
-C :後跟一個數字,例如 –C2 則表示打印符合要求的行以及上下各兩行test
例題:file
包含 ‘halt’ 的行以及這行下面的兩行都打印出:語法
grep -A2 'halt' /etc/passwd
包含 ‘halt’ 的行以及這行上面的兩行都打印出:
grep -B2 'halt' /etc/passwd
包含 ‘halt’ 的行以及這行上面和下面的各兩行都打印出:
grep -C2 'halt' /etc/passwd
過濾出帶有某個關鍵詞的行並輸出行號:
grep -n 'root' /etc/passwd
過濾不帶有某個關鍵詞的行,並輸出行號:
grep -nv 'nologin' /etc/passwd
過濾出全部包含數字的行:
grep '[0-9]' /etc/inittab
過濾出全部不包含數字的行:
grep -v '[0-9]' /etc/inittab
把全部以 ‘#’ 開頭的行去除:
grep -v '^#' /etc/inittab
去除全部空行和以 ‘#’ 開頭的行:
grep -v '^#' /etc/crontab |grep -v '^$'
如何打印出不以英文字母開頭的行
grep '^[^a-zA-Z]' test.txt
grep '[^a-zA-Z]' test.txt
過濾任意一個字符與重複字符:
grep 'r..o' /etc/passwd . 表示任意一個字符
grep 'ooo*' /etc/passwd * 表示零個或多個前面的字符
grep '.*' /etc/passwd |wc -l ‘.*’ 表示零個或多個任意字符,空行也包含在內
指定要過濾字符出現的次數:
grep 'o\{2\}' /etc/passwd
篩選一個或一個以上前面的字符:
egrep 'o+' test.txt
篩選零個或一個前面的字符:
egrep 'o?' test.txt
篩選字符串1或者字符串2:
egrep 'aaa|111|ooo' test.txt
egrep中( )的應用:
egrep 'r(oo)|(at)o' test.txt 用( )表示一個總體,例如(oo)+就表示1個 ‘oo’ 或者多個 ‘oo’