grepまたはegrepは、以下を含むmailqの結果と正確に一致することはできません。

grepまたはegrepは、以下を含むmailqの結果と正確に一致することはできません。

grepまたはegrepを使用して、感嘆符/爆発を含むアーカイブされたEメール行をインポートしようとしています。

root@server:~# mailq

-Queue ID- --Size-- ----Arrival Time---- -Sender/Recipient-------
0528561D88      878 Wed Feb  1 21:46:12  [email protected]
                                         [email protected]

0D14161E2B      657 Wed Feb  x xx:47:01  [email protected]
                                         [email protected]

0798C61E0F      657 Wed Feb  x xx:45:02  [email protected]
                                         [email protected]

14AF361E2F!     657 Wed Feb  x xx:48:01  [email protected]
                                         [email protected]

Next

root@server:~# mailq |grep "[[:alnum:]]\!"
3658861E66!     657 Wed Feb  x xx:48:01  [email protected]
root@server:~# mailq |grep "^[[:alnum:]]\!"
root@server:~#

最初のgrep操作は期待した結果を提供しますが、2番目の操作はまったく機能しません。

どんなアイデアがありますか?

ベストアンサー1

2 番目の正規表現は、^[[:alnum:]]!行の先頭に感嘆符が付く単一の英数字と一致します。

例えば

3!
A!
c!

しかし、

14AF361E2F!

(10桁の英数字と!

正確に10文字の合計を一致させるには、!次のようにします。

$ mailq | grep -E '^[[:alnum:]]{10}!'

おすすめ記事