grep ou egrep não corresponde corretamente aos resultados do mailq contendo um?

0

Como o título diz, estou tentando obter as linhas de e-mails retidos com grep ou egrep que contêm um ponto de exclamação / bang

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]

próximo

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

O primeiro trabalho grep fornece o resultado esperado, mas o segundo não funciona de todo

Alguma opinião?

    
por marios88 01.02.2017 / 21:06

2 respostas

0

Você é grep ping para um caractere alnum seguido por um estrondo. Experimente o padrão ^[[:alnum:]]{10}! .

    
por 01.02.2017 / 21:31
2

A segunda expressão regular, ^[[:alnum:]]! , corresponde a um único caractere alfanumérico no início da linha, seguido por um ponto de exclamação.

Por exemplo

3!
A!
c!

Mas não

14AF361E2F!

(dez caracteres alfanuméricos e ! )

Para corresponder exatamente a dez caracteres e ! , use

$ mailq | grep -E '^[[:alnum:]]{10}!'
    
por 01.02.2017 / 21:29