Der er forskellige anvendelser af kommandoen 'awk' i Linux. For eksempel kan den bruges til at udskrive indholdet af en tekstfil. Den første linje med mange tekstfiler indeholder overskriften på filen, og nogle gange skal den første linje springes over, når du udskriver indholdet af filen. I denne vejledning viser vi dig, hvordan du udfører denne opgave ved hjælp af kommandoen 'awk'.
Opret en tekstfil
For at følge denne vejledning skal du oprette en tabulatorafgrænset tekstfil med navnet bogliste.txt med følgende indhold. Denne fil indeholder en liste over bøger med deres tilsvarende forfattere. I denne vejledning viser vi dig, hvordan du udskriver forskellige dele af denne fil, efter at du har sprunget over den første linje.
Cybersikkerhed med bash Paul Troncone, Carl AlbingKommandolinie Kung Fu Jason Cannon
Linux Command Line Travis Booth
Bash i lette trin Mike McGrath
Unix i nemme trin Mike McGrath
Eksempel 1: Spring den første linje over en fil over ved hjælp af NR og operatoren '>'
NR-variablen angiver antallet af poster i en fil. Den følgende kommando 'awk' bruger NR-variablen til at springe over den første linje i en fil. Værdien af NR er 1 for den første linje. Den følgende kommando udskriver linjer, for hvilke NR-værdien er større end 1.
$ kat bogliste.txt$ awk '(NR> 1)' bogliste.txt
Følgende output produceres efter kørsel af ovenstående kommandoer. Outputtet inkluderer alle andre linjer end den første linje i filen.
Eksempel 2: Spring den første linje over ved at bruge NR og '!= 'operatør
Den følgende kommando 'awk' svarer til den i det foregående eksempel. Men '!= 'sammenligningsoperator bruges her i stedet for'> '.
$ kat bogliste.txt$ awk 'NR!= 1 'bogliste.txt
Følgende output produceres efter kørsel af ovenstående kommandoer. Outputtet viser alle andre linjer end den første linje i filen.
Eksempel 3: Spring over den første linje i en fil ved hjælp af en betinget erklæring
Den følgende kommando 'awk' udskriver linjerne i filen, hvis if-sætningen er sand. Her er if-sætningen kun sand, når NR-værdien ikke er lig med 1.
$ kat bogliste.txt$ awk 'if (NR!= 1) boglisten print.txt
Følgende output produceres efter kørsel af ovenstående kommandoer. Outputtet inkluderer alle linjer undtagen den første linje i filen.
Eksempel 4: Udskriv bognavne fra filen, men spring den første linje over
To 'awk' kommandoer bruges i dette eksempel til at udskrive alle bognavne undtagen det første. Kommandoen 'awk' læser den første kolonne fra filen baseret på feltadskilleren (\ t) og sender output til den anden 'awk' kommando. Den anden kommando 'awk' udskriver det ønskede output.
$ kat bogliste.txt$ awk -F "\ t" 'udskriv $ 1' bogliste.txt | awk 'NR!= 1 print '
Følgende output produceres efter kørsel af ovenstående kommandoer. Outputtet viser alle bognavne undtagen for den første bog.
Eksempel 5: Formater filindholdet efter at have sprunget over den første linje
Valgmuligheden '-F', NR-variablen og printf-funktionen bruges i den følgende 'awk' -kommando til at generere formateret output efter at springe over den første linje. Kommandoen deler filindholdet i kolonner baseret på \ t, og printf udskriver den første og anden kolonne, når NR-værdien er mindst 2.
$ kat bogliste.txt$ awk -F '\ t' 'NR> = 2 printf "% 30s% 20s \ n", $ 1, $ 2' bogliste.txt
Følgende output produceres efter kørsel af ovenstående kommandoer. Outputtet viser det formaterede indhold af filen, eksklusive den første linje i filen.
Eksempel 6: Udskriv bognavne efter at have sprunget over den første linje ved hjælp af NR og NF
Den følgende kommando 'awk' bruger indstillingen '-F' og NR og NF til at udskrive bognavne efter at have sprunget over den første bog. Indstillingen '-F' bruges til at adskille indholdet af filbasen på \ t. NR bruges til at springe over den første linje, og NF bruges kun til at udskrive den første kolonne.
$ kat bogliste.txt$ awk -F '\ t' 'NR> 1 && NF = 1' bogliste.txt
Følgende output produceres efter kørsel af ovenstående kommandoer. Outputtet inkluderer alle bognavne i filen bortset fra den første bog.
Eksempel 7: Udskriv de formaterede forfatternavne efter at have sprunget over den første linje
Den følgende kommando 'awk' bruger indstillingen '-F' og en betinget erklæring til at udskrive forfatternavnene efter at have sprunget over den første linje. Her bruges NR-værdien i if-tilstanden. Her udskrives “Forfatternavn: \ n \ n” som den første linje i stedet for indholdet fra den første linje. Forfatterens navne fra filen udskrives for de andre værdier for NR.
$ kat bogliste.txt$ awk -F '\ t' 'if (NR == 1) printf "\ nForfatternavn: \ n \ n"; ellers printf "% s \ n", $ 2 'bogliste.txt
Følgende output produceres efter kørsel af ovenstående kommandoer. Outputtet viser teksten "Forfatternavn:" med en ny linje, og alle forfatternavne udskrives undtagen den første.
Konklusion
Den første linje i en fil kan springes over ved hjælp af forskellige Linux-kommandoer. Som vist i denne vejledning er der forskellige måder at springe over den første linje i en fil ved hjælp af kommandoen 'awk'. Bemærkelsesværdigt kan NR-variablen i kommandoen 'awk' bruges til at springe over den første linje i enhver fil.