Basis van Linux en de opdrachtregel
$ 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.txtWat drukt de laatste awk in de bovenstaande sessie af?
- ADe twee regels „cellB FAIL 0.45” en „cellD FAIL 0.31”
- BDe twee regels „FAIL” en „FAIL”
- CDe twee regels „cellB” en „cellD”
Antwoord en toelichting tonen
Antwoord: C. De twee regels „cellB” en „cellD”
awk splitst elke regel bij witruimte in velden, geschreven als $1 voor het eerste, $2 voor het tweede enzovoort, met $0 voor de hele regel. „$2 == "FAIL"” is een patroon dat regels kiest waarvan het tweede veld FAIL is, en {print $1} is de actie die het eerste veld van zo'n regel afdrukt. De passende regels zijn die van cellB en cellD, dus cellB en cellD worden afgedrukt. awk behandelt een reeks spaties als één scheidingsteken, en is daardoor soms handiger dan cut om kolommen te halen uit uitvoer met ongelijke tussenruimte.
Verder: nog 9 vragen over Basis van Linux en de opdrachtregel