您好,登錄后才能下訂單哦!
今天小編給大家分享的是linux中強大的文本搜索工具-grep命令,相信很多人都不太了解,為了讓大家更加了解,所以給大家總結了以下內容,一起往下看吧。一定會有所收獲的哦。
grep是“global search regular expression and print out the line”的簡稱,意思是全面搜索正則表達式,并將其打印出來。這個命令可以結合正則表達式使用,它也是linux使用最為廣泛的命令。
grep命令的選項用于對搜索過程的補充,而其命令的模式十分靈活,可以是變量、字符串、正則表達式。需要注意的是:一當模式中包含了空格,務必要用雙引號將其引起來。
linux系統支持三種形式的grep命令,大兒子就是grep,標準,模仿的代表。二兒子興趣愛好多-egrep,簡稱擴展grep命令,其實和grep -E等價,支持基本和擴展的正則表達式。小兒子跑的最快-fgrep,簡稱快速grep命令,其實和grep -F等價,不支持正則表達式,按照字符串表面意思進行匹配。
語法格式: grep [參數]
常用參數:
-i | 搜索時,忽略大小寫 |
-c | 只輸出匹配行的數量 |
-l | 只列出符合匹配的文件名,不列出具體的匹配行 |
-n | 列出所有的匹配行,顯示行號 |
-h | 查詢多文件時不顯示文件名 |
-s | 不顯示不存在、沒有匹配文本的錯誤信息 |
-v | 顯示不包含匹配文本的所有行 |
-w | 匹配整詞 |
-x | 匹配整行 |
-r | 遞歸搜索 |
-q | 禁止輸出任何結果,已退出狀態表示搜索是否成功 |
-b | 打印匹配行距文件頭部的偏移量,以字節為單位 |
-o | 與-b結合使用,打印匹配的詞據文件頭部的偏移量,以字節為單位 |
參考實例
支持多文件查詢并支持使用通配符:
[root@linuxcool ~]# grep zwx file_* /etc/hosts
file_1:zwx
file_1:zwx
file_1:zwxddkjflkdjfdlkfjlsdkj
file_2:zwx
file_4:dkfjlzwxejfkje
file_4:zwx djfkdjf
file_4:zwxedkfgj
輸出匹配字符串行的數量:
[root@linuxcool ~]$ grep -c zwx file_*
file_1:2
file_2:1
file_3:0
列出所有的匹配行,并顯示行號:
[root@linuxcool ~]# grep -n zwx file_*
file_1:1:zwx
file_1:4:zwx
file_1:10:zwxddkjflkdjfdlkfjlsdkj
file_2:2:zwx
file_4:3:dkfjlzwxejfkje
file_4:4:zwx djfkdjf
file_4:5:zwxedkfgj
顯示不包含模式的所有行:
[root@linuxcool ~]# grep -vc zwx file_*
file_1:7
file_2:4
file_3:5
file_4:2
不再顯示文件名:
[root@linuxcool ~]# grep -h zwx file_*
zwx
zwx
zwxddkjflkdjfdlkfjlsdkj
zwx
dkfjlzwxejfkje
zwx djfkdjf
zwxedkfgj
只列出符合匹配的文件名,不列出具體匹配的行:
[root@linuxcool ~]# grep -l zwx file_*
file_1
file_2
file_4
不顯示不存在或無匹配的文本信息:
[root@linuxcool ~]# grep -s zwx file1 file_1
file_1:zwx
file_1:zwx
file_1:zwxddkjflkdjfdlkfjlsdkj
[root@linuxcool ~]# grep zwx file1 file_1
grep: file1: No such file or directory
file_1:zwx
file_1:zwx
file_1:zwxddkjflkdjfdlkfjlsdkj
遞歸搜索,不僅搜索當前目錄,還搜索子目錄:
[root@linuxcool ~]# grep -r zwx file_2 *
file_2:zwx
anaconda-ks.cfg:user --name=zwx --gecos="zwx"
file_1:zwx
file_1:zwx
file_1:zwxddkjflkdjfdlkfjlsdkj
file_2:zwx
file_4:dkfjlzwxejfkje
file_4:zwx djfkdjf
file_4:zwxedkfgj
initial-setup-ks.cfg:user --name=zwx --gecos="zwx"
匹配整詞,以字面意思去解釋他,相當于精確匹配:
[root@linuxcool ~]# grep zw* file_1
zwx
zwx
zdkfjeld
zw
ze
zwxddkjflkdjfdlkfjlsdkj
[root@linuxcool ~]# grep -w zw* file_1
zw
匹配整行,文件中的整行與模式匹配時,才打印出來:
[root@linuxcool ~]# grep -x zwx file_*
file_1:zwx
file_1:zwx
file_2:zwx
不輸出任何結果,已退出狀態表示結果:
[root@linuxcool ~]# grep -q zwx file_1
[root@linuxcool ~]# echo $?
0
[root@linuxcool ~]# grep -q zwx file_5
[root@linuxcool ~]# echo $?
1
[root@linuxcool ~]# grep -q zwx file5
grep: file5: No such file or directory
[root@linuxcool ~]# echo $?
2
查找一個文件中的空行和非空行:
[root@linuxcool ~]# grep -c ^$ file_1
4
[root@linuxcool ~]# grep -c ^[^$] file_1
15
匹配任意或重復字符用“.”或“*”符號來實現:
[root@linuxcool ~]# grep ^z.x file_1
zwx
zwx
zwxddkjflkdjfdlkfjlsdkj
[root@linuxcool ~]# grep ^z* file_6
zwx
dfkjd
zzdfjkd
zz dfdww
haha
關于linux中強大的文本搜索工具-grep命令就分享到這里了,希望以上內容可以對大家有一定的參考價值,可以學以致用。如果喜歡本篇文章,不妨把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。