コマンドで出力された次の文字列から数値をどのように抽出できますか?

コマンドで出力された次の文字列から数値をどのように抽出できますか?

コマンドの実行時に受信したメッセージ番号を抽出したいと思いますmailx -H。未読メッセージと新しいメッセージのメッセージ番号のみが必要です。次のコマンドを試してみました。

mailx -H|grep '^ [UN]'|cut -c 3-

ただし、目的の出力を提供しません。 U または N の後に行全体を提供します。 mailx -H コマンドの出力例は次のとおりです。

O 95 abcd Thu Sep  6 20:29   25/1245  Incident: 00291
O 96 efgh Thu Sep  6 20:29   25/1245  Incident: 00291
O 97 abcd  Thu Sep  6 20:29   25/1245 Incident: 00291
O 98 pqrs Thu Sep  6 20:29   25/1245  Incident: 00291
O 99 abcd  Thu Sep  6 20:29   25/1245 Incident: 00291
U100 cnhn Thu Sep  6 20:29   25/1244  Incident: 00291
U101 gont Thu Sep  6 20:29   25/1244  Incident: 00291
U102 qwer Thu Sep  6 20:29   25/1244  Incident: 00291

UまたはNの後の数字、つまり新しいメッセージまたは未読メッセージとO(以前)メッセージが必要です。シェルスクリプトでこれを行うにはどうすればよいですか?予想される出力は次のとおりです。

95
96
97
98
99
100
101
102

ベストアンサー1

この試み、

mailx -H | nawk -F '[^0-9]+' '/^ [U|N]/ { print $2}' 
  • [^0-9]+FSとして。
  • Uまたはで始まる行の抽出N
  • 2番目のフィールドの印刷

おすすめ記事