Er zijn verschillende toepassingen van het 'awk'-commando in Linux. Het kan bijvoorbeeld worden gebruikt om de inhoud van een tekstbestand af te drukken. De eerste regel van veel tekstbestanden bevat de kop van het bestand en soms moet de eerste regel worden overgeslagen bij het afdrukken van de inhoud van het bestand. In deze zelfstudie laten we u zien hoe u deze taak kunt uitvoeren met de opdracht 'awk'.
Een tekstbestand maken
Om deze tutorial te volgen, maakt u een door tabs gescheiden tekstbestand met de naam boekenlijst.tekst met de volgende inhoud:. Dit bestand bevat een lijst met boeken met de bijbehorende auteurs. In deze zelfstudie laten we u zien hoe u verschillende delen van dit bestand kunt afdrukken nadat u de eerste regel hebt overgeslagen.
Cyberbeveiliging met bash Paul Troncone, Carl AlbingCommandolijn Kung Fu Jason Cannon
Linux Command Line Travis Booth
Bash in eenvoudige stappen Mike McGrath
Unix in eenvoudige stappen Mike McGrath
Voorbeeld 1: Sla de eerste regel van een bestand over met NR en de operator '>'
De variabele NR geeft het aantal records in een bestand aan. De volgende 'awk'-opdracht gebruikt de NR-variabele om de eerste regel van een bestand over te slaan. De waarde van NR is 1 voor de eerste regel. Met de volgende opdracht worden regels afgedrukt waarvoor de NR-waarde groter is dan 1.
$ katten boekenlijst.tekst$ awk '(NR>1)' boekenlijst.tekst
De volgende uitvoer wordt geproduceerd na het uitvoeren van de bovenstaande opdrachten:. De uitvoer bevat alle regels behalve de eerste regel van het bestand.
Voorbeeld 2: Sla de eerste regel over door NR en de '!=' operator
De volgende 'awk'-opdracht is vergelijkbaar met die in het vorige voorbeeld. Echter, de '!=' vergelijkingsoperator wordt hier gebruikt in plaats van '>'.
$ katten boekenlijst.tekst$ awk 'NR!=1' boekenlijst.tekst
De volgende uitvoer wordt geproduceerd na het uitvoeren van de bovenstaande opdrachten:. De uitvoer toont alle regels behalve de eerste regel van het bestand.
Voorbeeld 3: Sla de eerste regel van een bestand over door een voorwaardelijke instructie te gebruiken
Het volgende 'awk'-commando zal de regels van het bestand afdrukken als het if-statement waar is. Hier is de if-statement alleen waar als de NR-waarde niet gelijk is aan 1.
$ katten boekenlijst.tekst$ awk 'if (NR!=1) print' boekenlijst.tekst
De volgende uitvoer wordt geproduceerd na het uitvoeren van de bovenstaande opdrachten:. De uitvoer bevat alle regels behalve de eerste regel van het bestand.
Voorbeeld 4: Druk de boeknamen uit het bestand af, maar sla de eerste regel over
In dit voorbeeld worden twee 'awk'-commando's gebruikt om alle boeknamen af te drukken, behalve de eerste. Het 'awk'-commando leest de eerste kolom uit het bestand op basis van het veldscheidingsteken (\t) en stuurt de uitvoer naar het tweede 'awk'-commando. Het tweede 'awk'-commando zal de gewenste uitvoer afdrukken.
$ katten boekenlijst.tekst$ awk -F "\t" 'print $1' boekenlijst.txt | awk 'NR!=1 afdruk'
De volgende uitvoer wordt geproduceerd na het uitvoeren van de bovenstaande opdrachten:. De uitvoer toont alle boeknamen behalve die van het eerste boek.
Voorbeeld 5: Formatteer de bestandsinhoud na het overslaan van de eerste regel
De '-F'-optie, NR-variabele en printf-functie worden gebruikt in de volgende 'awk'-opdracht om geformatteerde uitvoer te genereren na het overslaan van de eerste regel. De opdracht verdeelt de bestandsinhoud in kolommen op basis van \t, en printf drukt de eerste en tweede kolom af wanneer de NR-waarde minimaal 2 is.
$ katten boekenlijst.tekst$ awk -F '\t' 'NR>=2 printf "%30s %20s\n", $1, $2' boekenlijst.tekst
De volgende uitvoer wordt geproduceerd na het uitvoeren van de bovenstaande opdrachten:. De uitvoer toont de opgemaakte inhoud van het bestand, met uitzondering van de eerste regel van het bestand.
Voorbeeld 6: Druk de boeknamen af na het overslaan van de eerste regel met NR en NF
De volgende 'awk'-opdracht gebruikt de optie '-F' en NR en NF om de boeknamen af te drukken nadat het eerste boek is overgeslagen. De '-F' optie wordt gebruikt om de inhoud van het bestand te scheiden op \t. NR wordt gebruikt om de eerste regel over te slaan en NF wordt gebruikt om alleen de eerste kolom af te drukken.
$ katten boekenlijst.tekst$ awk -F '\t' 'NR>1 && NF=1' boekenlijst.tekst
De volgende uitvoer wordt geproduceerd na het uitvoeren van de bovenstaande opdrachten:. De uitvoer bevat alle boeknamen in het bestand behalve die van het eerste boek.
Voorbeeld 7: Druk de opgemaakte auteursnamen af na het overslaan van de eerste regel
De volgende 'awk'-opdracht gebruikt de optie '-F' en een voorwaardelijke instructie om de auteursnamen af te drukken na het overslaan van de eerste regel. Hier wordt de NR-waarde gebruikt in de if-conditie. Hier wordt "Naam auteur:\n\n" afgedrukt als de eerste regel in plaats van de inhoud van de eerste regel. De namen van de auteurs uit het bestand worden afgedrukt voor de andere waarden van NR.
$ katten boekenlijst.tekst$ awk -F '\t' ' if (NR==1) printf "\nAuteurnaam:\n\n"; else printf "%s\n", $2' boekenlijst.tekst
De volgende uitvoer wordt geproduceerd na het uitvoeren van de bovenstaande opdrachten:. De uitvoer toont de tekst "Auteurnaam:" met een nieuwe regel en alle auteursnamen worden afgedrukt behalve de eerste.
Conclusie
De eerste regel van een bestand kan worden overgeslagen door verschillende Linux-commando's te gebruiken. Zoals in deze tutorial wordt getoond, zijn er verschillende manieren om de eerste regel van een bestand over te slaan met de opdracht 'awk'. Opmerkelijk is dat de NR-variabele van het 'awk'-commando kan worden gebruikt om de eerste regel van elk bestand over te slaan.