Det er forskjellige bruksområder for 'awk' -kommandoen i Linux. For eksempel kan den brukes til å skrive ut innholdet i en tekstfil. Den første linjen i mange tekstfiler inneholder overskriften på filen, og noen ganger må den første linjen hoppes over når du skriver ut innholdet i filen. I denne opplæringen vil vi vise deg hvordan du kan utføre denne oppgaven ved å bruke kommandoen 'awk'.
Lag en tekstfil
For å følge med på denne veiledningen, opprett en tekstavgrenset tekstfil med navnet bokliste.tekst med følgende innhold. Denne filen inneholder en liste over bøker med tilhørende forfattere. I denne opplæringen vil vi vise deg hvordan du skriver ut forskjellige deler av denne filen etter å ha hoppet over første linje.
Cybersecurity med bash Paul Troncone, Carl AlbingKommandolinje Kung Fu Jason Cannon
Linux Command Line Travis Booth
Bash i enkle trinn Mike McGrath
Unix i enkle trinn Mike McGrath
Eksempel 1: Hopp over den første linjen i en fil ved hjelp av NR og operatøren '>'
NR-variabelen angir antall poster i en fil. Følgende kommando 'awk' bruker NR-variabelen til å hoppe over den første linjen i en fil. Verdien av NR er 1 for første linje. Følgende kommando vil skrive ut linjer der NR-verdien er større enn 1.
$ katt bokliste.tekst$ awk '(NR> 1)' bokliste.tekst
Følgende utdata blir produsert etter å ha kjørt kommandoene ovenfor. Utdata inkluderer alle andre linjer enn den første linjen i filen.
Eksempel 2: Hopp over første linje ved å bruke NR og '!= 'operatør
Følgende kommando "awk" er lik den i forrige eksempel. Imidlertid!= 'sammenligningsoperatør brukes her i stedet for'> '.
$ katt bokliste.tekst$ awk 'NR!= 1 'bokliste.tekst
Følgende utdata blir produsert etter å ha kjørt kommandoene ovenfor. Utgangen viser alle andre linjer enn den første linjen i filen.
Eksempel 3: Hopp over den første linjen i en fil ved å bruke en betinget uttalelse
Følgende kommando 'awk' vil skrive ut linjene i filen hvis if-setningen er sant. Her vil if-setningen bare være sant når NR-verdien ikke er lik 1.
$ katt bokliste.tekst$ awk 'if (NR!= 1) print 'bokliste.tekst
Følgende utdata blir produsert etter å ha kjørt kommandoene ovenfor. Utdata inkluderer alle linjer bortsett fra den første linjen i filen.
Eksempel 4: Skriv ut boknavnene fra filen, men hopp over første linje
To 'awk' -kommandoer brukes i dette eksemplet for å skrive ut alle boknavn bortsett fra det første. Kommandoen "awk" vil lese den første kolonnen fra filen basert på feltutskilleren (\ t) og sende utdataene til den andre "awk" -kommandoen. Den andre "awk" -kommandoen vil skrive ut ønsket utskrift.
$ katt bokliste.tekst$ awk -F "\ t" 'print $ 1' - bokliste.txt | awk 'NR!= 1 print '
Følgende utdata blir produsert etter å ha kjørt kommandoene ovenfor. Utgangen viser alle boknavnene bortsett fra den for den første boken.
Eksempel 5: Formater filinnholdet etter å ha hoppet over den første linjen
Alternativet '-F', NR-variabel og printf-funksjon brukes i følgende 'awk' -kommando for å generere formatert utgang etter å ha hoppet over første linje. Kommandoen vil dele filinnholdet i kolonner basert på \ t, og printf vil skrive ut første og andre kolonne når NR-verdien er minst 2.
$ katt bokliste.tekst$ awk -F '\ t' 'NR> = 2 printf "% 30s% 20s \ n", $ 1, $ 2' bokliste.tekst
Følgende utdata blir produsert etter å ha kjørt kommandoene ovenfor. Utgangen viser formatert innhold i filen, unntatt den første linjen i filen.
Eksempel 6: Skriv ut boknavnene etter å ha hoppet over første linje ved hjelp av NR og NF
Følgende kommando 'awk' bruker alternativet '-F' og NR og NF for å skrive ut boknavnene etter å ha hoppet over den første boken. Alternativet '-F' brukes til å skille innholdet i filbasen på \ t. NR brukes til å hoppe over første linje, og NF brukes kun til å skrive ut den første kolonnen.
$ katt bokliste.tekst$ awk -F '\ t' 'NR> 1 && NF = 1' bokliste.tekst
Følgende utdata blir produsert etter å ha kjørt kommandoene ovenfor. Utdataene inkluderer alle boknavnene i filen, bortsett fra den første boken.
Eksempel 7: Skriv ut de formaterte forfatternavnene etter å ha hoppet over den første linjen
Følgende kommando 'awk' bruker alternativet '-F' og en betinget uttalelse for å skrive ut forfatternavnene etter å ha hoppet over første linje. Her brukes NR-verdien i if-tilstanden. Her vil "Forfatternavn: \ n \ n" skrives ut som første linje i stedet for innholdet fra første linje. Forfatterens navn fra filen vil bli skrevet ut for de andre verdiene til NR.
$ katt bokliste.tekst$ awk -F '\ t' 'if (NR == 1) printf "\ n Forfatternavn: \ n \ n"; ellers printf "% s \ n", $ 2 'bokliste.tekst
Følgende utdata blir produsert etter å ha kjørt kommandoene ovenfor. Utgangen viser teksten “Forfatternavn:” med en ny linje, og alle forfatternavn skrives ut bortsett fra den første.
Konklusjon
Den første linjen i en fil kan hoppes over ved å bruke forskjellige Linux-kommandoer. Som vist i denne opplæringen, er det forskjellige måter å hoppe over den første linjen i en fil ved å bruke kommandoen 'awk'. Merkbart kan NR-variabelen til kommandoen 'awk' brukes til å hoppe over den første linjen i en hvilken som helst fil.