我是新手脚本世界。我的要求是编写一个bash脚本,它将解析'/ usr/sbin/postqueue -p'的输出并获得邮件队列数(最后一行中突出显示的数字)。多行搜索和在bash脚本中使用正则表达式
<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中完成这项工作,因为我将不得不修改现有脚本以使用此逻辑。
让我知道你是否有任何想法,谢谢。
难道是'4'在' - 1 KBytes in 4 Requests'中,你是在? – JNevill
这里没有多行。如果你想在最后一行匹配一个正则表达式,'tail -n 1 | grep regex'或者更简洁'sed -n'$/regex/p''。使用'sed'提取数字,请尝试http://stackoverflow.com/questions/11568859/how-to-extract-text-from-a-string-using-sed – tripleee
感谢您的快速响应。是的,我以后4. –