過濾來自一個文件或標準輸入匹配模式內容。 除了grep外,還有egrep、fgrep。egrep是grep的擴展,至關於grep -E。fgrep至關於grep -f,用的少。 Usage: grep [OPTION]... PATTERN [FILE]... 支持的正則 描述 -E,--extended-regexp 模式是擴展正則表達式(ERE) -F,--fixed-strings 模式是換行分隔固定字符串 -G,--basic-regexp 模式是基本正則表達式(BRE) -P,--perl-regexp 模式是Perl正則表達式 -e,--regexp=PATTERN 使用模式匹配,可指定多個模式匹配 -f,--file=FILE 從文件每一行獲取模式 -i,--ignore-case 忽略大小寫 -w,--word-regexp 模式匹配整個單詞 -x,--line-regexp 模式匹配整行 -v,--invert-match 打印不匹配的行 輸出控制 描述 -m,--max-count=NUM 輸出匹配的結果num數 -n,--line-number 打印行號 -H,--with-filename 打印每一個匹配的文件名 -h,--no-filename 不輸出文件名 -o,--only-matching 只打印匹配的內容 -q,--quiet 不輸出正常信息 -s, --no-messages 不輸出錯誤信息 -r,--recursive --include=FILE_PATTERN --exclude=FILE_PATTERN --exclude-from=FILE --exclude-dir=PATTERN 遞歸目錄。 只搜索匹配的文件。 跳過匹配的文件。 跳過匹配的文件,來自文件模式。 跳過匹配的目錄 -c,--count 只打印每一個文件匹配的行數 內容行控制 描述 -B,--before-context=NUM 打印匹配的前幾行 -A,--after-context=NUM 打印匹配的後幾行 -C,--context=NUM 打印匹配的先後幾行 --color[=WHEN], 匹配的字體顏色 博客地址:http://lizhenliang.blog.51cto.com QQ羣:323779636(Shell/Python運維開發羣) 示例: 1) 輸出b文件中在a文件相同的行 # grep -f a b 2) 輸出b文件中在a文件不一樣的行 # grep -v -f a b 3) 匹配多個模式 # echo "a bc de" |xargs -n1 |grep -e 'a' -e 'bc' a bc 4) 去除空格http.conf文件空行或開頭#號的行 # grep -E -v "^$|^#" /etc/httpd/conf/httpd.conf 5) 匹配開頭不分大小寫的單詞 # echo "A a b c" |xargs -n1 |grep -i a 或 # echo "A a b c" |xargs -n1 |grep '[Aa]' A a 6) 只顯示匹配的字符串 # echo "this is a test" |grep -o 'is' is is 7) 輸出匹配的前五個結果 # seq 1 20 |grep -m 5 -E '[0-9]{2}' 10 11 12 13 14 8)統計匹配多少行 # seq 1 20 |grep -c -E '[0-9]{2}' 11 9) 匹配b字符開頭的行 # echo "a bc de" |xargs -n1 |grep '^b' bc 10) 匹配de字符結尾的行並輸出匹配的行 # echo "a ab abc abcd abcde" |xargs -n1 |grep -n 'de$' 5:abcde 11) 遞歸搜索/etc目錄下包含ip的conf後綴文件 # grep -r '192.167.1.1' /etc --include *.conf 12) 排除搜索bak後綴的文件 # grep -r '192.167.1.1' /opt --exclude *.bak 13) 排除來自file中的文件 # grep -r '192.167.1.1' /opt --exclude-from file 14) 匹配41或42的數字 # seq 41 45 |grep -E '4[12]' 41 42 15) 匹配至少2個字符 # seq 13 |grep -E '[0-9]{2}' 10 11 12 13 16) 匹配至少2個字符的單詞,最多3個字符的單詞 # echo "a ab abc abcd abcde" |xargs -n1 |grep -E -w -o '[a-z]{2,3}' ab abc 17) 匹配全部IP # ifconfig |grep -E -o "[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}" 18) 打印匹配結果及後3行 # seq 1 10 |grep 5 -A 3 5 6 7 8 19) 打印匹配結果及前3行 # seq 1 10 |grep 5 -B 3 2 3 4 5 20) 打印匹配結果及先後3行 # seq 1 10 |grep 5 -C 3 2 3 4 5 6 7 8 21) 不顯示輸出 不顯示錯誤輸出: # grep 'a' abc grep: abc: No such file or directory # grep -s 'a' abc # echo $? 2 不顯示正常輸出: # grep -q 'a' a.txt grep支持上一章的基礎和擴展正則表達式字符。