Linux grep 命令


grep命令是支持正則表達式的一個多用途文本搜索工具,一般格式為:

grep [選項] [模式] [文件...]

grep命令由選項,模式和文件三部分組成,他在一個或多個文件中搜索滿足模式的文本航,模板后所有的字符串被看做文件名,文件名可以有多個,搜索的結果被打印到屏幕,不影響源文件內容,grep命令的選項及其意義如表所示:

選項 意義

-c

只輸出匹配行的數量
-i 搜索時忽略大小寫
-F 不支持正則表達式,按字符串字面意思搜索
-h 查詢多文件時不顯示文件名
-l 只列出符合匹配的文件名,而不列出具體的匹配行
-n 列出所有匹配行,並顯示行號
-s 不顯示不存在或無匹配文本的錯誤信息
-v 顯示不包含匹配文本的所有行
-w 匹配整詞
-x 匹配整行
-r 遞歸搜索當前及子目錄
-q 禁止輸出任何結果,以退出狀態表示搜索是否成功
-b 打印匹配行距文件頭部的偏移量,以自己為單位
-o 與-b結合使用,打印匹配詞距頭部文件的偏移量
-E 支持擴展正則表達式

1. -c 選項

-c表示輸出匹配字符串行的數量

[root@linuxTest Desktop]# grep -c name linuxNote 
1

2 -n選項

-n選項列出所有的匹配行,並顯示行號

[root@linuxTest Desktop]# grep linuxTest -n linuxNote 
2:[root@linuxTest ~]# brctl show
9:[root@linuxTest ~]# virsh list --all
15:[root@linuxTest ~]# virsh start centos
18:[root@linuxTest ~]# virsh domiflist centos

3. -v選項

-v反選,即顯示不包含模式的所有行。

[root@linuxTest Desktop]# grep linuxTest -v linuxNote 
查看linux bridge的配置:
bridge name    bridge id        STP enabled    interfaces
br0        8000.f8cab817ea1b    no        em1
                            vnet0
virbr0        8000.5254002db1be    yes        virbr0-nic

4.-i 選項

默認情況選,grep是大小寫敏感的,加上-i選項后,不區分大小寫。

[root@linuxTest Desktop]# grep linuxtest -i linuxNote 
[root@linuxTest ~]# brctl show
[root@linuxTest ~]# virsh list --all
[root@linuxTest ~]# virsh start centos
[root@linuxTest ~]# virsh domiflist centos

5.-h選項

-h選項表示查詢多文件時不顯示文件名

[root@linuxTest Desktop]# grep linuxTest -h linuxNote test 
[root@linuxTest ~]# brctl show
[root@linuxTest ~]# virsh list --all
[root@linuxTest ~]# virsh start centos
[root@linuxTest ~]# virsh domiflist centos
linuxTest
linuxTest 1111

6.-l 選項

-l 選項只列出符合匹配的文件名,而不列出具體行

[root@linuxTest Desktop]# grep linuxTest -l linuxNote test 
linuxNote
test

7.-r 選項

默認情況下grep只對當前目錄進行搜索,-r表示遞歸搜索,不僅搜索當前目錄,而且搜索子目錄

[root@linuxTest Desktop]# grep memory -ir * 
Binary file rhel-server-6.7-x86_64-dvd.iso matches
Binary file SW/cherrytree-0.30.5.tar matches
SW/cherrytree-0.30.5/windows/de_DE.dic:Memorymap/m
SW/cherrytree-0.30.5/windows/de_DE.dic:memorymap/ozm
SW/cherrytree-0.30.5/windows/pl.dic:MemoryStick
SW/cherrytree-0.30.5/windows/pl.dic:memoryzacja/AMNn
Binary file SW/cherrytree-0.30.5/locale/cs/LC_MESSAGES/cherrytree.mo matches

8. -q選項

grep命令師默認輸出結果的,-q則不輸出結果,而是已退出的狀態來表示是否成功,退出狀態0表示搜索成功,退出狀態1表示表示未搜索到滿足模式的行,退出狀態2表示由於程序錯誤未能執行

[root@linuxTest Desktop]# grep linuxTest -q linuxNote test 
[root@linuxTest Desktop]# echo $?
0
#退出狀態是0
[root@linuxTest Desktop]# grep cccc -q linuxNote test 
[root@linuxTest Desktop]# echo $?
1
#退出狀態是1
[root@linuxTest Desktop]# grep cccc -q -x dsf
grep: dsf: No such file or directory
[root@linuxTest Desktop]# echo $?
2
#沒有該文件,退出狀態是2

grep和正則表達式結合使用的例子

1.匹配行首

#以字母v開頭的行
[root@linuxTest Desktop]# grep ^v linuxNote 
virbr0		8000.5254002db1be	yes		virbr0-nic
vnet0      bridge     br0        e1000       52:54:00:9c:5e:fc

2. 查找空白行

[root@linuxTest Desktop]# grep -c ^$ linuxNote 
2

3.精確匹配

“\<\>”用於精確匹配

[root@linuxTest Desktop]# grep Test test
linuxTest
linuxTest 1111
Test

[root@linuxTest Desktop]# grep "\<Test\>" test
Test
#第二個命令當中,只精確匹配了Test這個單詞

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM