grep 或egrep 无法正确匹配包含a 的mailq 的结果?

grep 或egrep 无法正确匹配包含a 的mailq 的结果?

我正在尝试使用 grep 或 egrep 获取包含感叹号/爆炸的保留电子邮件行

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]

下一个

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

第一个 grep 工作提供了预期的结果,但第二个根本不起作用

有什么想法吗?

答案1

第二个正则表达式^[[:alnum:]]!匹配行开头的单个字母数字字符,后跟感叹号。

例如

3!
A!
c!

但不是

14AF361E2F!

(十个字母数字字符,和!

要恰好匹配十个字符 和!,请使用

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

答案2

您正在grepping 一个 alnum 字符,然后听到一声巨响。尝试一下该模式^[[:alnum:]]{10}!

相关内容