1. 程式人生 > >grep命令總結

grep命令總結

遍歷 -a body 出現 數字 要求 gre ont 正則表達式

grep命令:

grep是一種強大的文本搜索工具,它能使用正則表達式搜索文本,並把匹配的行打印出來


語法:

grep [參數] 'word' [filename]


常用參數:

  • -n:過濾出符合要求行的同時,連同行號一起輸出

  • -c: 打印符合要求的行數

  • -v:打印不符合要求的行

  • --color: 匹配到的關鍵字用紅色標識(默認就有的)

  • -A:後跟一個數字,空格可有可無,-A2 表示打印符合要求的行以及下面兩行

  • -B:後跟一個數字,-B2 表示打印符合要求的行以及上面兩行

  • -C:後跟一個數字,-C2 表示打印符合要求的行以及上下各兩行

  • -r:把目錄下面所有的文件全部遍歷 【了解即可】

  • -i:不區分大小寫

  • -E:能使用擴展正則表達式(grep -E = egrep)

  • -q:不顯示任何信息

  • -w:精準匹配符合指定字符串的行

  • -e:可以匹配多個字符串


特殊符號(.*+?|):

. 任意字符,包括特殊字符,下劃線,空格,

* 零個 或者 多個 *前面的字符

.* 任意數量任意字符,包括空行

*. 'r*.o' 匹配出o前面有零個或者多個任意字符的行

+ 表示 1 個或 多個 + 前面的字符 僅限egrep

表示 0 個或 1 個?前面的字符 僅限egrep

| 表示或者 僅限egrep



示例:

  1. grep '[aeiou]' 1.txt 取其中任意一個進行匹配

  2. grep '[0-9]' 1.txt 匹配任意數字

  3. grep '[^0-9]' 1.txt 匹配包含非數字的行,只要包含非數字的行都會顯示出來

  4. grep '^[0-9]' 1.txt 取數字開頭的行

  5. grep -v '[0-9]' 1.txt 匹配不包含數字的行

  6. grep -v '^[0-9]' 1.txt 匹配非0-9開頭的行

  7. grep '^[^0-9]' 1.txt 取不以數字開頭的行,可匹配特殊符號,不包括空行

  8. grep '^$' 1.txt 取空行,不包含任何字符的行(^表示行首;$表示行尾)

  9. grep '^[1-9][0-9]*$' 1.txt 匹配數字1-9開頭且0 個或多個數字結尾的

  10. grep '[^a-zA-Z]' 匹配包含非字母的行,並非全部都沒有字母,只要含有非字母都可以

  11. grep -v '^#' 1.txt 去除所有以"#"開頭的行

  12. grep -v '^$' 1.txt |grep -v '^#' 去除所有空行和以 # 開頭的行

  13. grep -A 1 'root' 1.txt 過濾出包含 root 的行以及下面一行

  14. grep 'o\{2\}' 1.txt 過濾包含2個字母o的行(指定過濾字符次數)

  15. egrep 'roo|body' 1.txt 匹配 roo 或者 匹配 body

  16. egrep 'r(oo)|(at)o' 1.txt 用括號表示一個整體,例子會匹配 roo 或者 ato

  17. egrep '(oo){1,3}' 1.txt 匹配 1 到 3 次 'oo'


練習:

1.過濾出帶有某個關鍵詞的行並輸出行號(/etc/passwd)

2.過濾不帶有某個關鍵詞的行,並輸出行號(/etc/passwd)

3.過濾出所有包含數字的行(/etc/inittab)

4.過濾出所有不包含數字的行 (/etc/inittab)

5.把所有以 ‘#’ 開頭的行去除 (/etc/inittab)

6.去除所有空行和以 ‘#’ 開頭的行 (/etc/inittab)

7.過濾任意一個字符與重復字符 (/etc/passwd)

8.指定要過濾字符出現的次數 (/etc/passwd)


grep命令總結