天天看點

Linux下的grep指令詳解

grep指令

使用grep指令可以查找檔案内符合條件的字元串。

指令文法:

grep [選項] [查找模式][檔案]

指令中各選項的含義如表所示。

表                                  grep指令選項含義

選項

含義

-E

模式是一個可擴充的正規表達式

-F

模式是一組由斷行符分隔的定長字元串

-P

模式是一個Perl正規表達式

-b

在輸出的每一行前顯示包含比對字元串的行在檔案中的位元組偏移量

-c

隻顯示比對行的數量

-i

比較時不區分大小寫

-h

抑制輸出的檔案名字首

-l

隻顯示比對的檔案名

-L

隻顯示不比對的檔案名

-n

在輸出前加上比對字元串所在行的行号(檔案首行行号為1)

-v

隻顯示不包含比對字元的行

-x

強制模式僅完全比對一行

-w

強制模式僅完全比對字詞

-e <模式>

用模式來進行比對操作

-f <檔案>

從檔案中取得模式

-r

遞歸地,讀取每個目錄下的所有檔案

-q

禁止一切正常輸出

-I

強制認為該二進制檔案沒有包含任何搜尋樣式

-s

取消錯誤消息

例:在檔案kkk中搜尋比對字元“testfile”。

[root@rhel~]# cat kkk

akkk

testfile

oooo

ppppp

//檢視檔案kkk檔案内容

[root@rhel~]# grep 'test file' kkk

例:在檔案kkk中搜尋比對字元“es”,并且加上行号輸出。

[root@rhel~]# grep -n es kkk

2:testfile

例:顯示所有以d開頭的檔案中包含“test”的行資料内容。

[root@rhel~]# cat d1

1

test1

[root@rhel~]# cat d2

2

test2

//檢視檔案d1和d2的檔案内容

[root@rhel~]# grep 'test' d*

d1:test1

d2:test2

例:在檔案aa中顯示所有包含至少有5個連續小寫字元的行資料内容。

[root@rhel~]# cat aa

aaaaa

bbb

AAAAA

BBB

aaaaaa

//檢視檔案aa檔案内容

[root@rhel~]# grep '[a-z]\{5\}' aa

例:查找sshd程序資訊。

[root@rhel ~]# ps -ef|grep sshd

root      1665    1  0 00:45 ?        00:00:00 /usr/sbin/sshd

root      2573 1665  0 00:48 ?        00:00:00 sshd: root@pts/1

root      2870 2578  0 01:01 pts/1    00:00:00 grep sshd

//在這裡結合管道方式查找sshd程序資訊

例7.6:在/root/aa檔案中找出以b開頭的行内容。

[root@rhel ~]# grep ^b /root/aa

例7.7:在/root/aa檔案中輸出不是以b開頭的行内容。

[root@rhel ~]# grep -v ^b /root/aa

例:在/root/kkk檔案中輸出以le結尾的行内容。

[root@rhel ~]# grep le$ /root/kkk

test file

例:在/root/kkk檔案中顯示包含es字元或者kk字元的行内容。

[root@rhel ~]# grep -E"es|kk" /root/kkk

繼續閱讀