Extraia o número da linha de um arquivo que tem um valor diferente de zero antes de uma string especificada

Extraia o número da linha de um arquivo que tem um valor diferente de zero antes de uma string especificada

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 $5para $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 grepvocê 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

informação relacionada