我有一个包含以下数据的文件
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
请注意,我不是打印实数,而是打印行中直到点的第一个数字。
和sed:
cat inputfile.txt | sed '/ 0 failed$/d ; s/\..*//'
和grep 和 sed:
cat inputfile.txt | grep -v ' 0 failed$' | sed 's/\..*//'
输出:
3
4