
我有一個包含以下數據的文件
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