多行搜索和在bash脚本中使用正则表达式

时间:2016-08-03 12:01:11

标签: regex bash grep

我是脚本世界的新手。我的要求是编写一个bash脚本,它将解析'/ usr / sbin / postqueue -p'的输出并获取邮件队列计数(最后一行中突出显示的数字)。

<Output of postqueue -p>
postqueue: warning: Mail system is down -- accessing queue directly
-Queue ID-  --Size-- ----Arrival Time---- -Sender/Recipient-------
9F34D414BA0A      304 Wed Aug  3 11:50:01  <sender>
                                         <recipient>

85F00414D434      304 Wed Aug  3 11:50:02  <sender>
                                         <recipient>

0C5E2414D435      303 Wed Aug  3 11:50:03  <sender>
                                         <recipient>

73C6041CCC47      304 Wed Aug  3 11:50:03  <sender>
                                         <recipient>

-- 1 Kbytes in 4 Requests.

那么,我如何使用grep进行多行搜索?当我在网上搜索时,我了解了pcregrep但是我没有得到哪个包提供了这个二进制文件。 (我使用的是RHEL7)。我浏览了grep的手册,但找不到任何有趣的内容。

第二个问题是,如何在bash中使用正则表达式从最后一行提取邮件队列数?

我让它在Python中工作,但我想在bash中完成这项工作,因为我必须修改现有脚本才能使用此逻辑。

如果您有任何想法,请告诉我,谢谢。

1 个答案:

答案 0 :(得分:0)

要从最后一行获取请求计数,我建议使用awk

/usr/sbin/postqueue -p | tail -n 1 | awk -F" " '{print $(NF-1)}'

对于pcregrep命令,您可以使用sudo yum whatprovides pcregrep查看哪个包提供此命令