
Estou tendo um arquivo que contém os seguintes dados
1. verification: 10 passed 0 failed
2. verification: 10 passed 0 failed
3. verification: 10 passed 1 failed
4. verification: 10 passed 3 failed
5. verification: 10 passed 0 failed
Quero saber os números das linhas 3 e 4.
Responder1
Supondo que o arquivo seja chamado in.txt
, então: -
awk '$5>0 {print $0; }' in.txt
Darei à você:-
3. verification: 10 passed 1 failed
4. verification: 10 passed 3 failed
Presumi que os números das linhas (1-5) fazem parte do arquivo. Se não estiver, mude $5
para $4
.
Se o número da linha fizer parte do arquivo e você quiser apenas imprimi-lo sem o ponto: –
awk '$5>0 {sub(/\./,"",$1); print $1 }' in.txt
que dá:-
3
4
Responder2
Com GNU grep
você pode usar lookbehind
:
$ grep -P '(?<!0) failed' file
3. verification: 10 passed 1 failed
4. verification: 10 passed 3 failed
Ou uma versão mais curta de awk
:
$ awk '$5 > 0' file
Responder3
Observe que não estou imprimindo números reais, mas o primeiro número da linha até o ponto.
Comsed:
cat inputfile.txt | sed '/ 0 failed$/d ; s/\..*//'
Comgrep e sed:
cat inputfile.txt | grep -v ' 0 failed$' | sed 's/\..*//'
Saída:
3
4