Extrahieren Sie die Zeilennummer einer Datei, die vor einer angegebenen Zeichenfolge einen Wert ungleich Null hat

Extrahieren Sie die Zeilennummer einer Datei, die vor einer angegebenen Zeichenfolge einen Wert ungleich Null hat

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 $5in $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 grepkö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

verwandte Informationen