grep的簡單理解

2022-05-15 09:12:53 字數 3240 閱讀 3257

概述:

grep最早由肯·湯普遜寫成。原先是ed下的乙個應用程式,名稱來自於g/re/p(globally search a regular expression and print,以正則進行全域查詢以及列印)。在ed下,輸入g/re/p這個命令後,會將所有匹配『定義樣式』的字串,以行為單位列印出,但是並不對原檔案內容進行修改。

grep命令在對乙個或多個檔案的內容進行基於模式搜尋的情況下是非常有用的。模式可以是單個字元、多個字元、單個單詞、或者是乙個句子。當然最有用的還是正則。

例1 在檔案中查詢模式(單詞)

1

grep

match_pattern file_name #標記匹配顏色加 --color=auto 選項

2 grep "match_pattern"  file_name

例2 在多個檔案中查詢模式。

grep

"match_pattern

" file_1 file_2 file_3 ...

例3 使用-l引數列出包含指定模式的檔案的檔名。

root@linux:~# grep -l root /etc/passwd /etc/shadow /etc/fstab

例4 使用-n引數,在檔案中查詢指定模式並顯示匹配行的行號,-c只計算匹配了多少行。

grep

"text

" -n file_name

cat file_name | grep

"text

" -n

grep

"text

" -n file_1 file_2 #多個檔案

使用正規表示式 -e 選項:

grep -e "

[1-9]+

"egrep

"[1-9]+

"只輸出檔案中匹配到的部分 -o 選項:

echo this is a test line. | grep -o -e "

[a-z]+\.

"line.

echo this is a test line. | egrep -o "

[a-z]+\.

"line.

例5 使用-v引數輸出不包含指定模式的行

grep -v "

match_pattern

" file_name

#只在目錄中所有的.php和.html檔案中遞迴搜尋字元 grep

"main()

" . -r --include *.

#在搜尋結果中排除所有readme檔案

grep

"main()

" . -r --exclude "

readme

"#在搜尋結果中排除filelist檔案列表裡的檔案

grep

"main()

" . -r --exclude-from filelist

例6 使用 ^ 符號輸出所有以某指定模式開頭的行

例7 使用 $ 符號輸出所有以指定模式結尾的行。

例8 使用 -r 引數遞迴地查詢特定模式

grep -r root /etc/ #上面的命令將會遞迴的在/etc目錄中查詢「root」單詞

例9 使用 grep 查詢檔案中所有的空行

grep ^$ /etc/shadow  #由於/etc/shadow檔案中沒有空行,所以沒有任何輸出

例10 使用 -i 引數忽略大小寫

例11 使用 -e 引數查詢多個模式,#也可以使用-f選項來匹配多個樣式,在樣式檔案中逐行寫出需要匹配的字元。當然還可以使用-e通過擴充套件正則來表示

echo this is a text line | grep -e "

is" -e "

line

" -o

isis

line

cat patfile

aaabbb

echo aaa bbb ccc ddd eee | grep -f patfile -o

echo this is a text line |grep -e "is|line" -o

-e {}前面要的內容如果是多個字元,要用()包裹起來,否則只會匹配{}前面相連的單一字元

例12 使用 -f 用檔案指定待查詢的模式

root@linux:~# cat

grep_file

^root

root

false

$

root@linux:~# grep -f grep_file /etc/passwd

例13 使用 -c 引數計算模式匹配到的數量

root@linux:~# grep -cf file /etc/passwd

#cf引數的順序不能顛倒,file裡定義要匹配的模式

2

例14 輸出匹配指定模式行的前或者後面n行

a)使用-b引數輸出匹配行的前4行

b)使用-a引數輸出匹配行的後4行

c)使用-c引數輸出匹配行的前後各4行

例15 -q 靜默輸出,用於測試

例16 列印樣式匹配所位於的字元或位元組偏移

echo gun is not unix | grep -bo "

not"

7:not

#一行中字串的字元便宜是從該行的第乙個字元開始計算,起始值為0。選項 -b -o 一般總是配合使用。

GREP簡單使用

grep 是 global search regular expression and print out the line 的簡稱,即全面搜尋正規表示式並列印行,該命令是 linux 中的一種非常強大的文字搜尋工具,它可以根據指定的字串,對檔案的每一行進行搜尋,如果找到該字串,則輸出該行的內容。目...

grep的簡單的用法

演示檔案 root cyf opt cat 123.txt qqqqqqqqqq wwwwwwwww eeeeeeeeeaa rrrrrr aaaaa 111222 3334 5a1 a表示匹配本行和之後的行 root cyf opt grep a 1 111 123.txt 1112222 b表示...

linux的grep命令簡單使用

linux的grep命令學習 grep命令是乙個很強大的文字查詢命令,grep全稱是global regular expression print,可以配合正規表示式來使用 grep常見的兩種使用方式 基於檔案的查詢,使用格式為 grep 命令引數 待匹配模式串 查詢檔案 為可選的引數 例如 gre...