
Tengo un archivo que contiene los siguientes datos.
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
Quiero saber los números de línea de 3 y 4.
Respuesta1
Suponiendo que el archivo se llame in.txt
, entonces: -
awk '$5>0 {print $0; }' in.txt
Te regalaré:-
3. verification: 10 passed 1 failed
4. verification: 10 passed 3 failed
Supuse que los números de línea (1-5) son parte del archivo. Si no es así, cambie $5
a $4
.
Si el número de línea es parte del archivo y desea imprimirlo sin el punto:-
awk '$5>0 {sub(/\./,"",$1); print $1 }' in.txt
lo que da:-
3
4
Respuesta2
Con GNU grep
, puedes usar lookbehind
:
$ grep -P '(?<!0) failed' file
3. verification: 10 passed 1 failed
4. verification: 10 passed 3 failed
O una versión más corta de awk
:
$ awk '$5 > 0' file
Respuesta3
Tenga en cuenta que no estoy imprimiendo números reales, sino el primer número de la línea hasta el punto.
Consed:
cat inputfile.txt | sed '/ 0 failed$/d ; s/\..*//'
Congrep y sed:
cat inputfile.txt | grep -v ' 0 failed$' | sed 's/\..*//'
Producción:
3
4