Grep模式匹配的正则表达式

最近工作中,需要在系统启动之后查看媒体相关的安装包版本信息,每周两三次需要使用下面的命令行:

 

rpm -qa | grep gst        -- 查看Gstreamer安装包版本信息

rpm -qa | grep audio     -- 查看Audio相关安装包版本信息

rpm -qa | grep video     -- 查看Video相关安装包版本信息

rpm -qa | grep tracker  -- 查看Traker安装包版本信息

 

当然也可以使用zypper se命令来搜索含有这些关键字的安装包版本信息;然而在报告中附上安装包版本信息还是rpm -qa的输出格式更好。

 

从以上几个命令行来看,就是要从rpm -qa命令的输出结果中,搜索出含有gst, audio, video, tracker等关键字的行,也就是相关安装包的名称及版本信息。这几行命令,单独执行时,输出结果还有部分重合的,因为含有多个关键字的行会出现在多个命令的结果中;同时,多次执行rpm -qa还会增加时间消耗和风险,最典型的风险是,大家协同工作在一台设备上时,可能要安装或者卸载一些安装包,顺序多次执行rpm -qa可能产生不同的结果,因为它们是不同时刻系统全部安装包的快照。

 

这里,我想一定可以找到一个模式匹配的整则表达式,一次性搜索出至少含有一个关键字的行,无重复地给出安装包版本信息。那么这个模式匹配正则表达式会是啥样子的呢?

 

=============================

 

上面这个问题是我不了解grep命令的模式使用,想多了呢;然而仍保留于此,以示不学无术的后果。

 

参考《Grep学习笔记》,使用a|b|c模式,来匹配a或b或c,应该就可以了。命令行是:

 

rpm -qa | grep gst|audio|video|tracker | sort

 

写到这里想到,shell不会将中间三个竖线解析为管道命令吧,要是那样的话,就变“洗具”为“杯具”了呢。结果如何,下周试验便知。再读《Grep学习笔记》,似乎这个命令行该是:

 

rpm -qa | grep 'gst|audio|video|tracker' | sort

 

=============================

 

验证后发现,以上两个命令行都存在问题,第一个命令行,Shell确实将竖线解析为管道命令,而第二个命令行,没有任何结果显示,查看grep的帮助文档得知,shell将正则表达式解析为一个模式。正确的命令行是:

 

rpm -qa | grep -E 'gst|audio|video|tracker' | sort

 

此处,-E表示其后所跟着的模式是扩展的正则表达式。至此,解决了我所遇到的问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值