 更多精彩,请点击上方蓝字关注我们!

前面,我们详细总结了linux shell特殊符号详解、重定向、linux正则表达式详解。在掌握了这些的基础上,依次详解三剑客配合正则的使用。下面,详细总结三剑客之grep的使用。
grep可接收来自文件、标准输入或管道的输入。如果忘记了 指定文件,grep会等待键盘输入。如果输入来自管道,就会有另一条命令的输出通过管道变成grep命令的输入,如果匹配到找到的模式,会打印出来。

基本语法及常用选项
grep [OPTIONS] PATTERN [FILE...] grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...]
(1)--color=auto:高亮显示匹配到的内容 (2)-v:反向选择
(3)-i:比较字符时忽略大小写
(4)-c:count统计,统计匹配结果的行数,不是匹配结果的次数
(5)-o:只显示匹配内容,其余的不显示
(6)-n:在输出结果显示行号
(7)-q:静默(脚本当中,返回值表示是否执行成功)
(8)-E:表示支持使用扩展的正则表达式元字符(+,?,|,(),()+)相当于egrep
(9)-A:输出满足条件的后几行
(10)-B:输出满足条件的前几行
(11)-C:前后都输出
(12)-e:同时列出几个匹配的内容
(13)-w:将表达式作为词来查找,相当于正则\<...\>,...表示定义的规则
(14)-f:使用模式文件进行搜索
常用选项:
(1)--color=auto:高亮显示匹配到的内容
[root@yanjiaxi ~]# grep --color=auto "root" /etc/passwd root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin [root@yanjiaxi ~]# grep "root" /etc/passwd #alias设置别名 root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin
不高亮显示匹配内容:
[root@yanjiaxi ~]# "grep" "root" /etc/passwd #使用双引号 root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin [root@yanjiaxi ~]# 'grep' "root" /etc/passwd #使用单引号 root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin [root@yanjiaxi ~]# /bin/grep "root" /etc/passwd #使用命令路径
root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin
(2)-v:反向选择
[root@yanjiaxi ~]# grep -v "/bin/bash$" /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 #找出不以/bin/bash结尾的行或用户
[root@yanjiaxi regex]# cat test My name is yanjiaxi. #Welcome to my linux and PYTHON world. My qq-email is 1104843323@qq.com #My phone number is 18075147545
My wechart is w549859123 good bye I like python
[root@yanjiaxi regex]# grep -v "^$" test | grep -v "^#" My name is yanjiaxi. My qq-email is 1104843323@qq.com My wechart is w549859123 good bye I like python
(3)-i:比较字符时忽略大小写
[root@yanjiaxi regex]# cat test My name is yanjiaxi. #Welcome to my linux and PYTHON world. My qq-email is 1104843323@qq.com #My phone number is 18075147545
My wechart is w549859123 good bye I like python [root@yanjiaxi regex]# grep -i "python" test #Welcome to my linux and PYTHON world. I like python
(4)-c:count统计,统计匹配结果的行数,不是匹配结果的次数 [root@yanjiaxi regex]# grep -ic "python" test 2 [root@yanjiaxi regex]# grep -c "nologin$" /etc/passwd 40
(5)-o:只显示匹配内容,其余的不显示 [root@yanjiaxi regex]# grep -io "python" test PYTHON python
[root@yanjiaxi regex]# lscpu | grep -o vmx #检查是否可虚拟化
(6)-n:在输出结果显示行号 [root@yanjiaxi regex]# grep -in "python" test 2:#Welcome to my linux and PYTHON world. 9:I like python
(7)-q:静默(脚本当中,返回值表示是否执行成功) [root@yanjiaxi regex]# cat demo2.sh #!/bin/bash if $(grep -q "yanjiaxi" /etc/passwd);then echo "yanjaixi exists" else useradd yanjaixi fi
(8)-E:表示支持使用扩展的正则表达式元字符(+,?,|,(),()+)相当于egrep [root@yanjiaxi regex]# grep -E "[[:digit:]]+" test #相当于egrep My qq-email is 1104843323@qq.com #My phone number is 18075147545 My wechart is w549859123
(9)-A:输出满足条件的后几行 [root@yanjiaxi regex]# grep -A 1 "PYTHON" test #Welcome to my linux and PYTHON world. My qq-email is 1104843323@qq.com
(10)-B:输出满足条件的前几行 [root@yanjiaxi regex]# grep -B 1 "PYTHON" test My name is yanjiaxi. #Welcome to my linux and PYTHON world.
(11)-C:前后都输出 [root@yanjiaxi regex]# grep -C 1 "PYTHON" test My name is yanjiaxi. #Welcome to my linux and PYTHON world. My qq-email is 1104843323@qq.com
(12)-e:同时列出几个匹配的内容 [root@yanjiaxi regex]# grep -e "^root" -e "^yanjiaxi" /etc/passwd root:x:0:0:root:/root:/bin/bash yanjiaxi:x:1000:1000:yanjiaxi:/home/yanjiaxi:/bin/bash
(13)-w:将表达式作为词来查找,相当于正则\<...\>,...表示定义的规则
(14)-f:使用模式文件进行搜索 [root@yanjiaxi regex]# cat demo1 root ^yanjiaxi bash$ [root@yanjiaxi regex]# grep -f demo1 /etc/passwd root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin yanjiaxi:x:1000:1000:yanjiaxi:/home/yanjiaxi:/bin/bash
未完待续 ---------------------------------------------------------------------------------------------------------------------- 我们尊重原创,也注重分享,文章来源于微信公众号:Linux与数据库自学之道,建议关注公众号查看原文。如若侵权请联系qter@qter.org。 ----------------------------------------------------------------------------------------------------------------------
|