Extrai o número da linha de um arquivo que está tendo um valor diferente de zero antes de uma string especificada

2

Eu 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

Eu quero saber os números de linha de 3 e 4.

    
por Chinna 25.06.2014 / 12:25

3 respostas

2

Assumindo que o arquivo é chamado in.txt , então: -

awk '$5>0 {print $0; }' in.txt

vai te dar: -

3. verification: 10 passed 1 failed
4. verification: 10 passed 3 failed

Eu fiz a suposição de que os números de linha (1-5) fazem parte do arquivo. Se não for, altere o $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
    
por 25.06.2014 / 13:19
1

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
    
por 25.06.2014 / 13:55
0

Por favor, note que eu não estou imprimindo números reais, mas o primeiro número na linha até o ponto.

com sed :

 cat inputfile.txt | sed  '/ 0 failed$/d ; s/\..*//'

Com grep e sed :

 cat inputfile.txt | grep -v ' 0 failed$' | sed 's/\..*//'

Saída:

3
4
    
por 25.06.2014 / 13:09