Shell文字處理三劍客之grep

2021-08-08 16:59:17 字數 4344 閱讀 6950

過濾來自乙個檔案或標準輸入匹配模式內容。

除了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 suchfileor 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命令是一種強大的文字搜尋工具,根據使用者指定的 模式 對目標文字進行匹配檢查,列印匹配到的行,由正規表示式或者字元及基本文字字元所編寫的過濾條件 ...