私はスクリプティングの世界で初めてです。私の必要条件は、 '/ usr/sbin/postqueue -p'の出力を解析し、メール待ち行列数(最後の行にハイライト表示された数字)を得るbashスクリプトを書くことです。複数行の検索とbashスクリプトでのregexの使用
<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のmanページをスキミングしましたが、興味深いものは見つかりませんでした。
2番目の質問は、bashでregexを使用して最後の行からメールキューの数を抽出するにはどうすればいいですか?
私はこれをPythonで動作させましたが、私はこのロジックを使用するために既存のスクリプトを修正する必要があるため、これをbashで実行したいと思います。
ご意見ありがとうございます。ありがとうございます。
を提供しているパッケージを参照して
sudo yum whatprovides pcregrep
を使用することができ、それは '4'あなたが後にしている「4 KBytesの1 KBytes」に? – 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
素早く対応してくれてありがとう。 「P」と出力変数があり - 無効なオプション:はい、私はその4 –