目录
grep -A数字 :表示匹配内容及内容的后‘数字’行,例如
grep -B数字:表示匹配内容及内容之前的‘数字’行,例如
grep -C数字:表示匹配内容及内容上下的‘数字’行,例如:
grep -c :表示统计出现的相匹配的次数,类似于wc -l
grep -w:表示精确匹配,不显示大于匹配要求的行,仅显示正正好好的匹配结果,例如
2.1grep常用选项及含义
grep -E:表示支持扩展的正则表达式
grep -A数字 :表示匹配内容及内容的后‘数字’行,例如
[root@localhost ~]grep -A5 '川' sfz.txt
马小川 110105197806059190
黄小波 110105197806059219
何小涛 110105197806059230
郭小江 110105197806059251
胡小河 110105197806059272
郑小湖 110105197806059293
上述一共显示了6行,第一行含“川”,以及后五行的内容,这就是grep -A数字 的用法。
grep -B数字:表示匹配内容及内容之前的‘数字’行,例如
PowerShell [root@localhost ~] grep -B5 '川' sfz.txt
朱小云 110105197806059096
高小天 110105197806059116
林小海 110105197806059137
徐小山 110105197806059158
孙小石 110105197806059179
马小川 110105197806059190
--
曹小洋 110105197806059457
彭小流 110105197806059478
曾小溪 110105197806059499
肖小河 110105197806059518
田小谷 110105197806059539
樊小川 11010519780605955X
这里的内容六行为一组,最后一行都含“川”字,前面的5行表示搜索到的“川”前的五行内容。
grep -C数字:表示匹配内容及内容上下的‘数字’行,例如:
[root@localhost ~]# grep -C5 '川' sfz.txt
朱小云 110105197806059096
高小天 110105197806059116
林小海 110105197806059137
徐小山 110105197806059158
孙小石 110105197806059179
马小川 110105197806059190
黄小波 110105197806059219
何小涛 110105197806059230
郭小江 110105197806059251
胡小河 110105197806059272
郑小湖 110105197806059293
--
曹小洋 110105197806059457
彭小流 110105197806059478
曾小溪 110105197806059499
肖小河 110105197806059518
田小谷 110105197806059539
樊小川 11010519780605955X
上述的文字匹配到“川”的前后各五行,所以11行为一组,“樊小川”为最后一行的话则不会匹配到后面的行。
grep -c :表示统计出现的相匹配的次数,类似于wc -l
使用grep 统计出现的次数
[root@localhost ~]# grep -c '川' sfz.txt
2
grep -v:表示排除已经选择出来的内容
搜索文本文档中不含‘川’的行
[root@localhost ~]grep -v '川' sfz.txt
王小明 110105197806058930
李小华 110105197806058951
张小红 110105197806058972
刘小刚 110105197806058993
陈小强 110105197806059012
赵小丽 110105197806059033
周小芳 110105197806059054
吴小东 110105197806059075
朱小云 110105197806059096
高小天 110105197806059116
林小海 110105197806059137
徐小山 110105197806059158
孙小石 110105197806059179
黄小波 110105197806059219
何小涛 110105197806059230
郭小江 110105197806059251
胡小河 110105197806059272
郑小湖 110105197806059293
梁小海 110105197806059312
谢小溪 110105197806059333
宋小泉 110105197806059354
唐小潭 110105197806059375
许小泊 110105197806059396
邓小湖 110105197806059415
冯小海 110105197806059436
曹小洋 110105197806059457
彭小流 110105197806059478
曾小溪 110105197806059499
肖小河 110105197806059518
田小谷 110105197806059539
-c与-v的命令常常搭配使用,例如我们在使用查找进程的时候不需要将‘查找进程’这条命令也查出来需要进行过滤操作。
原始命令如下:ps + grep 容易把命令本身也查出来,要进行过滤,原始命令如下
[root@localhost ~]# ps -ef | grep crond
root 725 1 0 06:16 ? 00:00:00 /usr/sbin/crond -n
root 30081 118191 0 13:00 pts/0 00:00:00 grep --color=auto crond
[root@localhost ~]# ps -ef | grep -c crond
2
上述的命令中的输出结果的第二行root 30081 118191 0 13:00 pts/0 00:00:00 grep --color=auto crond为筛选出来的命令本身,我们如果不需要的话可以使用如下方法
使用ps -ef | grep crond | grep -v grep查出来关于crond的进行且过滤掉grep本身这条进程
ps -ef | grep crond | grep -v grep
root 725 1 0 06:16 ? 00:00:00 /usr/sbin/crond -n
如果还需要计数的话可以像如下这样:
[root@localhost ~] ps -ef | grep crond | grep -v grep | wc -l
1
或者
[root@localhost ~] ps -ef | grep crond | grep -v grep | grep -c crond
1
注意格式:先查所有的进程,再搜索关于crond的进程,排除命令本身,排除完成之后重新计数,顺序乱一个都不行!
ps -ef | grep crond | grep -v grep命令分析:
ps -ef:显示进程
grep crond :显示进程中关于定时任务的进程
grep -v grep:排除结果中的搜索命令grep本身的内容。
grep -i :表示搜索的时候忽略大小写,例如
可以不区分大小写的方式匹配出所有的内容
grep -w:表示精确匹配,不显示大于匹配要求的行,仅显示正正好好的匹配结果,例如
#原先的查找方法满足条件及以上都可以
[root@localhost ~]echo nihao nihaohao nihaohaohao ninihaohao | grep nihao
nihao nihaohao nihaohaohao ninihaohao
#当使用了-w进行精确匹配仅能匹配上满足条件的内容,具体如下
[root@localhost ~]echo nihao nihaohao nihaohaohao ninihaohao | grep -w nihao
nihao nihaohao nihaohaohao ninihaohao
#也可以使用\b选项划分界限完成精确匹配
[root@localhost ~]echo nihao nihaohao nihaohaohao ninihaohao | grep '\bnihao\b'
nihao nihaohao nihaohaohao ninihaohao
#或者使用<>符号进行精确匹配,注意需要添加上转移符号
[root@localhost ~]# echo nihao nihaohao nihaohaohao ninihaohao | grep '<nihao>'**
nihao nihaohao nihaohaohao ninihaohao**