
Ich habe eine Datei, die folgende Daten enthält
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
Ich möchte die Zeilennummern von 3 und 4 wissen.
Antwort1
Angenommen, die Datei heißt in.txt
, dann gilt: -
awk '$5>0 {print $0; }' in.txt
werde dir geben:-
3. verification: 10 passed 1 failed
4. verification: 10 passed 3 failed
Ich bin davon ausgegangen, dass die Zeilennummern (1-5) Teil der Datei sind. Wenn nicht, ändern Sie sie $5
in $4
.
Wenn die Zeilennummer Teil der Datei ist und Sie sie einfach ohne den Punkt drucken möchten: -
awk '$5>0 {sub(/\./,"",$1); print $1 }' in.txt
was ergibt:-
3
4
Antwort2
Mit GNU grep
können Sie Folgendes verwenden lookbehind
:
$ grep -P '(?<!0) failed' file
3. verification: 10 passed 1 failed
4. verification: 10 passed 3 failed
Oder eine kürzere Version von awk
:
$ awk '$5 > 0' file
Antwort3
Bitte beachten Sie, dass ich keine reellen Zahlen drucke, sondern die erste Zahl in der Zeile bis zum Punkt.
Mitsed:
cat inputfile.txt | sed '/ 0 failed$/d ; s/\..*//'
Mitgrep und sed:
cat inputfile.txt | grep -v ' 0 failed$' | sed 's/\..*//'
Ausgabe:
3
4