Bash

grep 或 egrep 與包含 a? 的 mailq 的結果不正確匹配?

  • December 20, 2018

我正在嘗試使用 grep 或 egrep 獲取包含驚嘆號 / bang 的保留電子郵件行

root@server:~# mailq

-Queue ID- --Size-- ----Arrival Time---- -Sender/Recipient-------
0528561D88      878 Wed Feb  1 21:46:12  root@example.com
                                        root@example2.com

0D14161E2B      657 Wed Feb  x xx:47:01  root@example.com
                                        root@example2.com

0798C61E0F      657 Wed Feb  x xx:45:02  root@example.com
                                        root@example2.com

14AF361E2F!     657 Wed Feb  x xx:48:01  root@example.com
                                        root@example2.com

下一個

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

第一個 grep 工作提供了預期的結果,但第二個根本不起作用

有什麼想法嗎?

您正在grepping 一個 alnum 字元,然後是一聲巨響。試試這個模式^[[:alnum:]]{10}!

第二個正則表達式^[[:alnum:]]!匹配行首的單個字母數字字元,後跟一個驚嘆號。

例如

3!
A!
c!

但不是

14AF361E2F!

(十個字母數字字元,和!

要準確匹配十個字元 and !,請使用

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

引用自:https://unix.stackexchange.com/questions/341825