Tente isso,
mailx -H | nawk -F '[^0-9]+' '/^ [U|N]/ { print $2}'
-
[^0-9]+
como um FS. - extrai as linhas que começaram com
U
ouN
- imprime o segundo campo
Eu quero extrair o número da mensagem que recebemos executando o comando mailx -H
.
Eu quero apenas os números de mensagem de mensagens não lidas e novas.
Eu tentei com o comando abaixo:
mailx -H|grep '^ [UN]'|cut -c 3-
Mas não está dando a saída necessária. Ele dá a linha inteira seguindo U ou N. A saída de amostra do comando mailx -H é:
O 95 abcd Thu Sep 6 20:29 25/1245 Incident: 00291
O 96 efgh Thu Sep 6 20:29 25/1245 Incident: 00291
O 97 abcd Thu Sep 6 20:29 25/1245 Incident: 00291
O 98 pqrs Thu Sep 6 20:29 25/1245 Incident: 00291
O 99 abcd Thu Sep 6 20:29 25/1245 Incident: 00291
U100 cnhn Thu Sep 6 20:29 25/1244 Incident: 00291
U101 gont Thu Sep 6 20:29 25/1244 Incident: 00291
U102 qwer Thu Sep 6 20:29 25/1244 Incident: 00291
Eu quero o número que segue U ou N, isto é, mensagens novas ou não lidas e mensagens O (antigas). Como isso pode ser feito em um script de shell? A saída esperada é
95
96
97
98
99
100
101
102
Experimente este grep
:
grep -P -o '(?<=O|U|N) ?[0-9]+'
Exemplo:
echo "O 95 abcd Thu Sep 6 20:29 25/1245 Incident: 00291
O 96 efgh Thu Sep 6 20:29 25/1245 Incident: 00291
O 97 abcd Thu Sep 6 20:29 25/1245 Incident: 00291
O 98 pqrs Thu Sep 6 20:29 25/1245 Incident: 00291
O 99 abcd Thu Sep 6 20:29 25/1245 Incident: 00291
U100 cnhn Thu Sep 6 20:29 25/1244 Incident: 00291
U101 gont Thu Sep 6 20:29 25/1244 Incident: 00291
U102 qwer Thu Sep 6 20:29 25/1244 Incident: 00291" | grep -P -o '(?<=O|U|N) ?[0-9]+'
95
96
97
98
99
100
101
102
-
grep --version
grep (GNU grep) 2.27
Se o grep
acima não funcionar / é suficiente, tente este sed
:
sed -E 's/^(O|U|N) ?([0-9]+) .*//g'
Exemplo:
echo "O 95 abcd Thu Sep 6 20:29 25/1245 Incident: 00291
O 96 efgh Thu Sep 6 20:29 25/1245 Incident: 00291
O 97 abcd Thu Sep 6 20:29 25/1245 Incident: 00291
O 98 pqrs Thu Sep 6 20:29 25/1245 Incident: 00291
O 99 abcd Thu Sep 6 20:29 25/1245 Incident: 00291
U100 cnhn Thu Sep 6 20:29 25/1244 Incident: 00291
U101 gont Thu Sep 6 20:29 25/1244 Incident: 00291
U102 qwer Thu Sep 6 20:29 25/1244 Incident: 00291" | sed -E 's/^(O|U|N) ?([0-9]+) .*//g'
95
96
97
98
99
100
101
102
Tags grep awk sed solaris shell-script