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这个单词
原文地址:https://www.cnblogs.com/nurruden/p/6279412.html