Извлечь номер строки файла, имеющий ненулевое значение перед указанной строкой

Извлечь номер строки файла, имеющий ненулевое значение перед указанной строкой

У меня есть файл, содержащий следующие данные

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

Я хочу знать номера строк 3 и 4.

решение1

Предположим, что файл называется in.txt, тогда:-

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

дам тебе:-

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

Я предположил, что номера строк (1-5) являются частью файла. Если это не так, измените $5на $4.

Если номер строки является частью файла и вы хотите просто напечатать его без точки:-

awk '$5>0 {sub(/\./,"",$1); print $1 }' in.txt

который дает:-

3
4

решение2

С помощью GNU grepвы можете использовать lookbehind:

$ grep -P '(?<!0) failed' file 
3. verification: 10 passed 1 failed
4. verification: 10 passed 3 failed

Или более короткая версия awk:

$ awk '$5 > 0' file

решение3

Обратите внимание, что я не печатаю реальные числа, а первое число в строке до точки.

Ссед:

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

Сgrep и sed:

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

Выход:

3
4

Связанный контент