linux中grep的使用

2021-07-29 15:40:57 字數 4044 閱讀 8371

核心

grep的基本操作

grep是一種強大的文字搜尋工具,它能使用正規表示式搜尋文字,並把匹配的行列印出來

選項

-a 不要忽略二進位制資料

-a《顯示列數》 除了顯示符合範本樣式的那一行之外,並顯示該行之後的內容

-b 在顯示符合范文樣式的那一行之外,並顯示該行之前的內容。

-c 計算符合范文樣式的列數

-c《顯示列數》或-《顯示列數》 除了顯示符合範本樣式的那一列之外,並顯示該列之前後的內容

-d《進行動作》 當指定要查詢的是目錄而非檔案時,必須使用這項引數,否則grep命令將回報資訊並停止動作

-e《範本樣式》 指定字串作為查詢檔案內容的范文樣式

-e 將范文樣式為延伸的普通表示法來使用,意味著使用能使用擴充套件正規表示式

-f《範本檔案》 指定範本檔案,其內容有乙個或多個範本樣式,讓grep查詢符合範本條件的檔案內容,格式為每一列的範本樣式

-f 將範本樣式視為固定字串的列表

-g 將范文樣式視為普通的表示法來使用

-h在顯示符合範本樣式的那一列之前,不標示改列所屬的檔名稱

-h在顯示符合範本樣式的那一列之前,標示該列的檔名稱

-i胡列字元大小寫的差別

-l列出檔案內容符合指定的範本樣式的檔名稱

-l列出檔案內容不符合指定的範本樣式的檔名稱

-n在顯示符合範本樣式的那一列之前,標示出該列的編號

-q不顯示任何資訊

-r/-r此引數的效果和指定」-d recurse」引數相同

-s 不顯示錯誤資訊

-v 反轉查詢

-w 只顯示全字元符合的列

-x只顯示全列符合的列

-y 此引數效果跟」-i」相同

-o 只輸出檔案中匹配到的部分

grep命令常見的用法

在檔案中搜尋乙個單詞,命令會返回乙個包含」match_pattern」的文字行

grep match_pattern file_name

grep

"match_pattern" file_name

在多個檔案中查詢

grep

"match_pattern" file1 file2 file3

輸出除之外的所有行-v 選項

grep -v "match_pattern" file_name
標記匹配顏色 –color=auto 選項

grep "match_pattern" file_name --color=auto
使用正規表示式 -e 選項

grep -e

"[1-9]+"

或egrep "[1-9]+"

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

[root@szb-l0032013 ~]# echo 

"this is the test line."|grep -o -e "[a-z]+\."

line.

[root@szb-l0032013 ~]# echo

"this is the test line."|egrep -o "[a-z]+\."

line.

統計檔案或文字中包含匹配字串的行數-c選項

grep -c "text" file_name
輸出包含匹配字串的行數-n選項

grep

"text" -n file_name

或cat file_name|grep

"text" -n

多個檔案

grep

"text" -n file1 file2

列印樣式匹配所位於的字元或位元組偏移一行中字串的字元是從該行的第乙個字元開始計算,起始值為0

[root@szb-l0032013 ~]# echo "gun is

not unix"|grep -b -o "not"

7:not

搜尋多個檔案並查詢匹配檔案在哪些檔案中

grep -l

"text" file1 file2 file3

grep遞迴搜尋檔案在多級目錄中對文字進行遞迴搜尋

grep "text".-r

-n

忽略匹配樣式中的字元大小寫

[root@szb-l0032013 ~]# echo 

"hello world"|grep -i "hello"

hello world

選項-e制動多個匹配樣式

[root@szb-l0032013 ~]# echo "this is the test line"|grep -e "is" -e "line" -o

isis

line

也可以使用-f選項來匹配多個樣式,在樣式檔案中逐行寫出需要匹配的字元

[root@szb-l0032013 ~]# cat patfile 

isline

[root@szb-l0032013 ~]# echo "this is the test line"|grep -f patfile -o

isis

line

在grep搜尋結果中包含或排除指定檔案

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

grep "main()" . -r --include *.

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

grep "main()" . -r -exclude "readme"

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

grep "main()" . -r --exclude-from filelist

使用0值位元組字尾的grep與xargs

測試檔案

[root@szb-l0032013 grep]# echo "aaa" >file1

[root@szb-l0032013 grep]# echo "bbb" >file2

[root@szb-l0032013 grep]# echo "ccc" >file3

[root@szb-l0032013 grep]# grep "aaa" file* -zl |xargs -0 rm

[root@szb-l0032013 grep]# ls

file2 file3

#執行後會刪除file1,grep輸出用-z選項來指定以0值位元組作為終結符檔名(\0),xargs -0讀取輸入並用0值位元組終結符分隔檔名然後刪除匹配檔案

grep 靜默輸出

grep -q

"test" filename

#不會輸出任何資訊,如果命令執行成功返回0,失敗則返回非0值,一般用於條件測試

列印出匹配文字之前或者之後的行

#顯示匹配某個結果之後的3行 使用-a選項

[root@szb-l0032013 grep]# seq 10|grep "5" -a 356

78#顯示匹配某個結果之前的3行 使用-b選項

[root@szb-l0032013 grep]# seq 10|grep "5" -b 323

45#顯示匹配某個結果的前3行和後3行,使用-c選項

[root@szb-l0032013 grep]# seq 10|grep "5" -c 323

4567

8#如果匹配結果有多個,會用"--"作為各匹配結果之間的分隔符

[root@szb-l0032013 grep]# echo -e "a\nb\nc\na\nb\nc"|grep a -a 1ab

--ab

linux中的grep使用技巧

總結定義 grep命令用於查詢檔案中的特定模式,並輸出包含搜尋模式的所有結果,用於快速搜尋匹配模式的簡單工具 grep o時,命令列只輸出匹配的文字 grep v時,命令列只輸出沒有匹配的文字行 grep r r時,匹配目錄下的所有檔案 grep f和 v時,一般用於對比兩個檔案,輸出兩個檔案相同行...

Linux之grep的使用

基本介紹 linux系統中grep命令是一種強大的文字搜尋工具,它能使用正規表示式搜尋文字,並把匹 配的行列印出來。grep全稱是global regular expression print,表示全域性正規表示式版本,它的使用許可權是所有使用者。grep的工作方式是這樣的,它在乙個或多個檔案中搜尋...

linux中grep的用法

過濾多個關鍵字 grep e root mysql etc passwd root 0 0 root root bin bash operator 11 0 operator root sbin nologin mysql 500 500 home mysql sbin nologin 排除多個關鍵...