天天看點

Linux檔案查找利器: grep指令詳解搭配管道操作

作者:雲計算練習生

1 grep簡介

grep (global search regular expression(RE) and print out the line,全面搜尋正規表達式并把行列印出來)是一種強大的文本搜尋工具,它能使用正規表達式搜尋文本,并把比對的行列印出來。

Unix的grep家族包括grep、egrep和fgrep。egrep和fgrep的指令隻跟grep有很小不同。egrep是grep的擴充,支援更多的re元字元, fgrep就是fixed grep或fast grep,它們把所有的字母都看作單詞,也就是說,正規表達式中的元字元表示回其自身的字面意義,不再特殊。linux使用GNU版本的grep。它功能更強,可以通過-G、-E、-F指令行選項來使用egrep和fgrep的功能。

Linux檔案查找利器: grep指令詳解搭配管道操作

2 grep常用用法

[root@www ~]grep [-acinv] [--color=auto] '搜尋字元串' filename

選項與參數:

-a :将 binary 檔案以 text 檔案的方式搜尋資料

-c :計算找到 '搜尋字元串' 的次數

-i :忽略大小寫的不同,是以大小寫視為相同

-n :順便輸出行号

2.1 将/etc/passwd,有出現 root 的行取出來

grep root /etc/passwd

Linux檔案查找利器: grep指令詳解搭配管道操作

或cat /etc/passwd | grep root

2.2 将/etc/passwd,有出現 root 的行取出來,同時顯示這些行在/etc/passwd的行号

grep -n root /etc/passwd

1:root:x:0:0:root:/root:/bin/bash

10:operator:x:11:0:operator:/root:/sbin/nologin

20:dockerroot:x:997:994:Docker User:/var/lib/docker:/sbin/nologin

Linux檔案查找利器: grep指令詳解搭配管道操作

2.3 将/etc/passwd,将沒有出現 root 的行取出來

grep -v root /etc/passwd

bin:x:1:1:bin:/bin:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologin

adm:x:3:4:adm:/var/adm:/sbin/nologin

lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

sync:x:5:0:sync:/sbin:/bin/sync

2.4 将/etc/passwd,将沒有出現 root 和nologin的行取出來

grep -v root /etc/passwd | grep -v nologin

sync:x:5:0:sync:/sbin:/bin/sync

shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

halt:x:7:0:halt:/sbin:/sbin/halt

ftptest:x:1000:1000::/home/ftptest:/bin/bash

test-new:x:1003:1003::/home/public/:/bin/bash

test1:x:1004:1005::/home/test1:/bin/bash

Linux檔案查找利器: grep指令詳解搭配管道操作

2.5 用 dmesg 列出核心資訊,再以 grep 找出内含 eth 那行,要将捉到的關鍵字顯色,且加上行号來表示

[root@www ~]dmesg | grep -n 'eth'

1797:[ 2.424494] e1000 0000:02:01.0 eth0: (PCI:66MHz:32-bit) 00:0c:29:c8:10:d3

1798:[ 2.424498] e1000 0000:02:01.0 eth0: Intel(R) PRO/1000 Network Connection

Linux檔案查找利器: grep指令詳解搭配管道操作

2.6根據檔案内容遞歸查找目錄

grep -r ‘energywise’ * #在目前目錄及其子目錄下搜尋'energywise'行的檔案

Linux檔案查找利器: grep指令詳解搭配管道操作

在/etc目錄遞歸搜尋host, 内容太多,隻截取部分

Linux檔案查找利器: grep指令詳解搭配管道操作

grep -l -r ‘energywise’ * #在目前目錄及其子目錄下搜尋'energywise'行的檔案,但是不顯示比對的行,隻顯示比對的檔案

Linux檔案查找利器: grep指令詳解搭配管道操作

這幾個指令很實用,是查找檔案的利器。有不對的地方希望不吝賜教,歡迎在評論區留言,分享你的看法。