提取指定字串之前具有非零值的檔案的行號

提取指定字串之前具有非零值的檔案的行號

我有一個包含以下數據的文件

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

相關內容