Linux中 grep/egrep的命令收集

語法: 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’
相關文章
相關標籤/搜索