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的功能。
2 grep常用用法
[root@www ~]grep [-acinv] [--color=auto] '搜尋字元串' filename
選項與參數:
-a :将 binary 檔案以 text 檔案的方式搜尋資料
-c :計算找到 '搜尋字元串' 的次數
-i :忽略大小寫的不同,是以大小寫視為相同
-n :順便輸出行号
2.1 将/etc/passwd,有出現 root 的行取出來
grep root /etc/passwd
或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
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
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
2.6根據檔案内容遞歸查找目錄
grep -r ‘energywise’ * #在目前目錄及其子目錄下搜尋'energywise'行的檔案
在/etc目錄遞歸搜尋host, 内容太多,隻截取部分
grep -l -r ‘energywise’ * #在目前目錄及其子目錄下搜尋'energywise'行的檔案,但是不顯示比對的行,隻顯示比對的檔案
這幾個指令很實用,是查找檔案的利器。有不對的地方希望不吝賜教,歡迎在評論區留言,分享你的看法。