如何使用grep命令处理文本?
admin
2023-02-22 05:40:07
0

grep是一种强大的文本搜索工具,它能使用特定模式匹配(包括正则表达式)搜索文本,并默认输出匹配行。Unix的grep家族包括grep、egrep和fgrep。

格式用法:grep[选项]…模式[文件]…
在每个文件或标准输入中搜索模式。
默认情况下,模式是一个基本的正则表达式(BRE)。

正则表达式的选择和解释:

-E    模式是一个扩展的正则表达式
-e    模式使用模式进行匹配
-f     从文件中获取模式
-i     忽略大小写的区别
-w   强制模式,只匹配完整的单词

查看文件,以这个文件为示例

root@zhaocheng ~]# cat filetest
ROOT:x:98:0:ROOT:/ROOT:/usr/local
root:x:0:0:root:/root:/bin/bash
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
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin

grep -E 这个是一个扩展的正则表达式,支持匹配多元素,可以通过管道符来连接

[root@zhaocheng ~]# grep -E 'root|ROOT|sync' filetest
ROOT:x:98:0:ROOT:/ROOT:/usr/local
root:x:0:0:root:/root:/bin/bash
sync:x:5:0:sync:/sbin:/bin/sync
operator:x:11:0:operator:/root:/sbin/nologin

而grep -e这是一个标准的匹配,一个e只能匹配一个元素,不支持管道,如果想匹配多个,后面需要再加-e再去匹配

[root@zhaocheng ~]# grep -e 'root' -e 'sync' filetest
root:x:0:0:root:/root:/bin/bash
sync:x:5:0:sync:/sbin:/bin/sync
operator:x:11:0:operator:/root:/sbin/nologin

而这里还有一个egrep,这个相当于grep的扩充版本,也就是本来grep -e不支持多元素匹配,不支持管道,而egrep支持管道
可以这么理解egrep(在linux中是grep -E)是扩展的grep

[root@zhaocheng ~]# egrep 'root|sync' filetest
root:x:0:0:root:/root:/bin/bash
sync:x:5:0:sync:/sbin:/bin/sync
operator:x:11:0:operator:/root:/sbin/nologin

grep -f 这个一般是用于排查两个文件当中有没有一样的,重复的行,要是有的话,就将重复的行给输出出来,这个/etc/passwd也是一个文件,前面的filetest也是一个文件,由于作出对比我将filetest删除了一部分,这样的话效果会明显,一般工作中要是对两个文件进行排查有没有相同的,有相同的行就过滤出来,可以使用grep -f

格式 grep -f 文件1 文件2

[root@zhaocheng ~]# grep -f filetest /etc/passwd
root:x:0:0:root:/root:/bin/bash
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
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin

grep -i 忽略大小写进行匹配,这个''也可以不加

[root@zhaocheng ~]# grep -i 'root' filetest
ROOT:x:98:0:ROOT:/ROOT:/usr/local
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

如果忽略大小写,还想多进行匹配的话,可以使用egrep,相当于grep -E,这样支持管道,进行多行匹配了

[root@zhaocheng ~]# egrep -i 'root|halt' filetest
ROOT:x:98:0:ROOT:/ROOT:/usr/local
root:x:0:0:root:/root:/bin/bash
halt:x:7:0:halt:/sbin:/sbin/halt
operator:x:11:0:operator:/root:/sbin/nologin

前面使用的匹配都是匹配的行,而只想去匹配一个单词,可以使用-w,

[root@zhaocheng ~]# egrep -w 'halt|sync' filetest
sync:x:5:0:sync:/sbin:/bin/sync
halt:x:7:0:halt:/sbin:/sbin/halt
[root@zhaocheng ~]# egrep -w 'hat|syn' filetest

**其他的一些参数

-s           无消息抑制错误消息
-v           反匹配选择不匹配的行
-V          显示版本信息并退出
--help    显示此帮助文本并退出**

-s 不显示错误信息,比如没有这个文件,加-s就不会输出错误内容

[root@zhaocheng ~]# grep kkkk /etc/shadows
grep: /etc/shadows: No such file or directory
[root@zhaocheng ~]# grep -s kkkk /etc/shadows

-v输出除了lp之外的所有的数据

[root@zhaocheng ~]# grep -v lp filetest
linuxaweqeeqw
ROOT:x:98:0:ROOT:/ROOT:/usr/local
halt$:x:0:0:root:/root:/bin/bash
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
#sync:x:5:0:sync:/sbin:/bin/sync
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
linuxoooghhrhg

-V输出grep的版本信息并退出

[root@zhaocheng ~]# grep -V
grep (GNU grep) 2.20
Copyright (C) 2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later .
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Mike Haertel and others, see .

相关内容

热门资讯

伊朗消息人士:美方提议包含不可... 当地时间6日,伊朗消息人士表示,伊朗尚未回应美国方面的最新提议,因为该提议包含一些不可接受的条款。他...
中国“四大发明”的历史遗憾,会... 导语:2026年初,美国国防部发布“人工智能战略”备忘录,将AI建设重心聚焦于作战、情报和企业三大方...
2026年深圳微信商城小程序公... 在数字化转型浪潮中,微信商城小程序已成为企业连接用户、拓展业务的关键载体。然而,面对市场上众多的小程...
原创 雷... 前小米技术一号位崔宝秋,休养一年多,重走创业路。 证明自己不只是「雷军的老同学」? 2026年的具...
伊朗:若美方不作出必要让步,已... △伊朗首都德黑兰(资料图)当地时间6日,伊朗议会国家安全与外交政策委员会发言人易卜拉欣·雷扎伊在社交...
戏韵新章,薪火永续——2026... 弦歌渐歇,余韵绵长。5月4日,“一出好戏·四市联动”2026豫剧文化艺术周在主会场许昌曹魏古城圆满落...
天迈科技收购预案公布!切入工业... 【大河财立方消息】 5月6日,天迈科技披露发行股份及支付现金购买资产并募集配套资金暨关联交易预案。根...
三星LG发布新一代OLED技术 据 THE ELEC 5月6日报道,三星显示与LG显示在美国洛杉矶SID Display Week ...
华为鸿蒙HarmonyOS 6... PChome 5月6日消息,今日,HarmonyOS开发者官方发布博文宣布,华为鸿蒙6系统负一屏的T...
原创 小... 机圈这潭水,从来就不缺惊喜,当你以为旗舰机的天花板已经近在眼前,友商们最多就是换块屏、升个级小修小补...