Voorbeeld 1: Druk een reeks kolommen af vanuit een opdrachtuitvoer
De volgende opdracht drukt de tweede, derde en vierde kolom af van de opdrachtuitvoer:, 'ls -l'. Hier worden de kolomnummers expliciet vermeld, maar een efficiëntere opdracht voor het afdrukken van hetzelfde bereik van kolommen wordt in het volgende voorbeeld getoond.
$ ls -l | awk ' print $2, $3, $4 'De volgende uitvoer wordt geproduceerd door de bovenstaande opdracht:.
Voorbeeld 2: Druk het bereik van kolommen uit een bestand af met a voor lus
Om dit voorbeeld en de andere voorbeelden in deze zelfstudie te volgen, maakt u een tekstbestand met de naam merken.tekst met de volgende inhoud::
ID CSE203 CSE102 CSE2021109 78 87 79
1167 67 81 70
1190 56 61 69
1156 89 55 78
199 54 66 58
De volgende 'awk'-opdracht drukt de eerste drie kolommen met markeringen af.tekst. De voor lus wordt gebruikt om de kolomwaarden af te drukken, en de lus omvat drie stappen. De NF variabele geeft het totale aantal velden of kolommen van het bestand aan.
$ kattensporen.tekst$ awk 'for(i=1;i<=NF-1;i++) printf $i" "; print ""' marks.txt
De volgende uitvoer wordt geproduceerd door de opdracht uit te voeren:. De output toont de student ID's en de cijfers voor CSE203 en CSE102.
Voorbeeld 3: Druk het bereik van kolommen af door begin- en eindvariabelen te definiëren
De volgende 'awk'-opdracht drukt de eerste drie kolommen van de opdrachtuitvoer 'ls -l' af door de . te initialiseren beginnend en einde variabelen. Hier, de waarde van de beginnend variabele is 1, en de waarde van de einde variabele is 3. Deze variabelen worden herhaald in een for-lus om de kolomwaarden af te drukken.
$ ls -l | awk ' BEGIN eerste = 1; laatste = 3voor (i = eerste; i < last; i++) printf("%s ", $i) print $last '
De volgende uitvoer verschijnt na het uitvoeren van de opdracht:. De uitvoer toont de eerste drie kolomwaarden van de uitvoer, 'ls -l'.
Voorbeeld 4: Druk een reeks kolommen af vanuit een bestand met opmaak
Het volgende 'awk'-commando zal de eerste drie kolommen van . afdrukken merken.tekst gebruik makend van printf en uitvoerveldscheidingsteken (OFS). Hier omvat de for-lus drie stappen en worden drie kolommen achter elkaar afgedrukt vanuit het bestand. OFS wordt hier gebruikt om ruimte tussen kolommen toe te voegen. Wanneer de tellerwaarde van de lus (i) gelijk is aan de einde variabele, dan wordt een nieuwe regel(\n) gegenereerd.
$ kattensporen.tekst$ awk -v start=1 -v end=3 ' voor (i=start; i<=end;i++) printf("%s%s",
$i,(i==einde) ? "\n" : OFS) ' markeringen.tekst
De volgende uitvoer wordt gegenereerd na het uitvoeren van de bovenstaande opdrachten:.
Voorbeeld 5: Druk het bereik van kolommen uit een bestand af met een voorwaardelijke instructie
De volgende 'awk'-opdracht drukt de eerste en laatste kolommen van een bestand af met behulp van een for-lus en een if-statement. Hier omvat de for-lus vier stappen. De beginnend en einde variabelen worden in het script gebruikt om de tweede en derde kolom uit het bestand weg te laten met behulp van de if-voorwaarde. De OFS-variabele wordt gebruikt om ruimte tussen de kolommen toe te voegen en de ORS-variabele wordt gebruikt om een nieuwe regel(\n) toe te voegen na het afdrukken van de laatste kolom.
$ kattensporen.tekst$ awk -v start=2 -v end=3 ' voor (i=1; i<=NF;i++)
if( i>=start && i<=end) continue;
else printf("%s%s", $i,(i!=NF) ? OFS : ORS) ' merken.tekst
De volgende uitvoer verschijnt na het uitvoeren van de bovenstaande opdrachten:. De uitvoer toont de eerste en laatste kolom met markeringen.tekst.
Voorbeeld 6: Druk het bereik van kolommen uit een bestand af met behulp van de NF-variabele
De volgende 'awk'-opdracht drukt de eerste en laatste kolommen van het bestand af met behulp van een NF-variabele. Er worden geen lussen of voorwaardelijke instructies gebruikt om de kolomwaarden af te drukken. NF geeft het aantal velden aan. Er zijn vier kolommen in tekens.tekst. $(NF-3) definieert de eerste kolom, en $NF geeft de laatste kolom aan.
$ kattensporen.tekst$ awk 'print $(NF-3)" "$NF' tekens.tekst
De volgende uitvoer wordt geproduceerd door de bovenstaande opdrachten uit te voeren:. De uitvoer toont de eerste en laatste kolom met markeringen.tekst.
Voorbeeld 7: Druk het bereik van kolommen uit een bestand af met substr() en index()
De functie index() retourneert een positie als de tweede argumentwaarde bestaat in de eerste argumentwaarde. De functie substr() kan drie argumenten aannemen:. Het eerste argument is een tekenreekswaarde, het tweede argument is de startpositie en het derde argument is de lengte. Het derde argument van substr() wordt weggelaten in de volgende opdracht:. Omdat de kolom begint bij $1 in het 'awk'-commando, zal de index()-functie $3 teruggeven en het commando zal afdrukken van $3 tot $4.
$ kattensporen.tekst$ awk 'print substr($0,index($0,$3))' merken.tekst
De volgende uitvoer wordt geproduceerd door de bovenstaande opdrachten uit te voeren:.
Voorbeeld 8: Druk achtereenvolgens een reeks kolommen uit een bestand af met printf
Het volgende 'awk'-commando drukt de eerste, tweede en derde kolom met markeringen af.txt door voldoende ruimte in te stellen voor 10 tekens.
$ kattensporen.tekst$ awk '//printf "%10s %10s %10s\n",$1,$3,$2 ' merken.tekst
De volgende uitvoer wordt geproduceerd door de bovenstaande opdrachten uit te voeren:.
Conclusie
Er zijn verschillende manieren om het bereik van kolommen af te drukken vanuit de opdrachtuitvoer of een bestand. Deze tutorial laat zien hoe de 'awk'-opdracht Linux-gebruikers kan helpen om inhoud van tabelgegevens af te drukken.