過濾來自乙個檔案或標準輸入匹配模式內容。
除了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],
匹配的字型顏色
示例:
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檔案空行或開頭#號的行
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]'
10
11
12
13
14
8)統計匹配多少行
# seq 1 20 |grep -c -e '[0-9]'
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]'
10
11
12
13
16) 匹配至少2個字元的單詞,最多3個字元的單詞
# echo "a ab abc abcd abcde" |xargs -n1 |grep -e -w -o '[a-z]'
ab
abc
17) 匹配所有ip
# ifconfig |grep -e -o "[0-9]\.[0-9]\.[0-9]\.[0-9]"
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 作用 行 過濾 用法 grep 正規表示式 檔案 路徑 grep e 擴充套件類正規表示式 檔案 路徑 劍客二 sed 用法 sed 選項 位址定位sed命令 檔案 路徑 sed 選項 正規表示式 sed命令 檔案 路徑 sed 選項 位址定位 正規表示式 sed命...
Shell 文字處理三劍客之grep
e,extended regexp 模式是擴充套件正規表示式 i,ignore case 忽略大小寫 n,line number 列印行號 v,invert match 列印不匹配的行 o,only matching 只列印匹配的內容 m,max count num 輸出匹配的結果 num 數 c,...
shell文字處理三劍客 grep
global search regular expression and print out the line 全面搜尋研究正規表示式並顯示出來 grep命令是一種強大的文字搜尋工具,根據使用者指定的 模式 對目標文字進行匹配檢查,列印匹配到的行,由正規表示式或者字元及基本文字字元所編寫的過濾條件 ...