
以下のデータを含むファイルがあります
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