Grundlagen von Linux und der Kommandozeile
$ cat result.txt
cellA PASS 0.12
cellB FAIL 0.45
cellC PASS 0.08
cellD FAIL 0.31
$ awk '$2 == "FAIL" {print $1}' result.txtWas gibt das letzte awk in der obigen Sitzung aus?
- ADie zwei Zeilen „cellB FAIL 0.45“ und „cellD FAIL 0.31“
- BDie zwei Zeilen „FAIL“ und „FAIL“
- CDie zwei Zeilen „cellB“ und „cellD“
Antwort und Erläuterung anzeigen
Antwort: C. Die zwei Zeilen „cellB“ und „cellD“
awk zerlegt jede Zeile an Leerräumen in Felder, die als $1 für das erste, $2 für das zweite usw. geschrieben werden; $0 steht für die ganze Zeile. „$2 == "FAIL"“ ist eine Bedingung, die Zeilen auswählt, deren zweites Feld FAIL ist, und {print $1} ist die Aktion, die das erste Feld dieser Zeile ausgibt. Das trifft auf die Zeilen von cellB und cellD zu, also werden cellB und cellD ausgegeben. awk behandelt eine Folge von Leerzeichen als ein einziges Trennzeichen und ist deshalb beim Herausschneiden von Spalten aus Ausgaben mit ungleichmäßigen Abständen manchmal einfacher zu handhaben als cut.
Weiter: 9 weitere Fragen zu Grundlagen von Linux und der Kommandozeile