
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}!'
答え2
alnum文字をpingしているのにgrep
大きな音がします。このパターンを試してください^[[:alnum:]]{10}!
。