Awk

Hvordan skrive ut en rekke kolonner ved hjelp av kommandoen 'awk'

Hvordan skrive ut en rekke kolonner ved hjelp av kommandoen 'awk'
Kommandoen 'awk' er en av mange kommandoer som kan brukes til å skrive ut en rekke kolonner fra tabelldata i Linux. Kommandoen 'awk' kan brukes direkte fra terminalen ved å utføre 'awk' -skriptfilen. I denne opplæringen vil vi vise deg hvordan du skriver ut en rekke kolonner fra tabelldata.

Eksempel 1: Skriv ut en rekke kolonner fra en kommandoutgang

Følgende kommando vil skrive ut andre, tredje og fjerde kolonne fra kommandoutgangen, 'ls -l'. Her er kolonnetallene eksplisitt oppgitt, men en mer effektiv kommando for utskrift av det samme kolonneområdet vises i neste eksempel.

$ ls -l | awk 'skriv ut $ 2, $ 3, $ 4'

Følgende utdata produseres av kommandoen ovenfor.

Eksempel 2: Skriv ut kolonneområdet fra en fil ved å bruke a til Løkke

For å følge med på dette eksemplet og de andre eksemplene i denne opplæringen, opprett en tekstfil med navnet merker.tekst med følgende innhold:

ID CSE203 CSE102 CSE202
1109 78 87 79
1167 67 81 70
1190 56 61 69
1156 89 55 78
199 54 66 58

Følgende kommando "awk" vil skrive ut de tre første kolonnene med merker.tekst. De til loop brukes til å skrive ut kolonneverdiene, og loop inneholder tre trinn. De NF variabel angir det totale antall felt eller kolonner i filen.

$ kattemerker.tekst
$ awk 'for (i = 1; i<=NF-1;i++) printf $i" "; print ""' marks.txt

Følgende utdata produseres ved å kjøre kommandoen. Resultatet viser studenten ID-er og merkene for CSE203 og CSE102.

Eksempel 3: Skriv ut kolonneområdet ved å definere start- og sluttvariabler

Følgende kommando 'awk' vil skrive ut de tre første kolonnene fra kommandoutgangen 'ls -l' ved å initialisere starter og slutter variabler. Her er verdien av starter variabel er 1, og verdien av slutter variabel er 3. Disse variablene gjentas i en for-løkke for å skrive ut kolonneverdiene.

$ ls -l | awk 'BEGIN first = 1; siste = 3
for (i = først; i < last; i++) printf("%s ", $i) print $last '

Følgende utdata vises etter at du har kjørt kommandoen. Utgangen viser de tre første kolonneverdiene til utgangen, 'ls -l'.

Eksempel 4: Skriv ut en rekke kolonner fra en fil med formatering

Følgende kommando "awk" vil skrive ut de tre første kolonnene i merker.tekst ved hjelp av printf og utgangsfelt separatorOFS). Her inkluderer for-sløyfen tre trinn, og tre kolonner blir skrevet ut i rekkefølge fra filen. OFS brukes her for å legge til mellomrom mellom kolonnene. Når tellerverdien til sløyfen (i) er lik slutter variabel, så genereres en ny linje (\ n).

$ kattemerker.tekst
$ awk -v start = 1 -v end = 3 'for (i = start; i<=end;i++) printf("%s%s",
$ i, (i == slutt) ? "\ n": OFS) 'merker.tekst

Følgende utdata genereres etter å ha kjørt kommandoene ovenfor.

Eksempel 5: Skriv ut kolonneområdet fra en fil ved hjelp av en betinget uttalelse

Følgende kommando "awk" vil skrive ut den første og siste kolonnen fra en fil ved hjelp av en for-loop og en if-setning. Her inkluderer for loop fire trinn. De starter og slutter variabler brukes i skriptet for å utelate andre og tredje kolonne fra filen ved å bruke if-tilstanden. OFS-variabelen brukes til å legge til mellomrom mellom kolonnene, og ORS-variabelen brukes til å legge til en ny linje (\ n) etter utskrift av den siste kolonnen.

$ kattemerker.tekst
$ awk -v start = 2 -v end = 3 'for (i = 1; i<=NF;i++)
hvis (i> = start && i<=end) continue;
annet printf ("% s% s", $ i, (i!= NF) ? OFS: ORS) 'merker.tekst

Følgende utdata vises når du har kjørt kommandoene ovenfor. Utgangen viser den første og siste kolonnen med merker.tekst.

Eksempel 6: Skriv ut kolonneområdet fra en fil ved hjelp av NF-variabelen

Følgende kommando 'awk' vil skrive ut den første og siste kolonnen fra filen ved hjelp av en NF-variabel. Ingen sløyfer eller betingede utsagn brukes til å skrive ut kolonneverdiene. NF angir antall felt. Det er fire kolonner i merker.tekst. $ (NF-3) definerer den første kolonnen, og $ NF indikerer den siste kolonnen.

$ kattemerker.tekst
$ awk 'print $ (NF-3) "" $ NF' merker.tekst

Følgende utdata produseres ved å kjøre ovennevnte kommandoer. Utgangen viser den første og siste kolonnen med merker.tekst.

Eksempel 7: Skriv ut kolonneområdet fra en fil ved hjelp av substr () og index ()

Indeksen () -funksjonen returnerer en posisjon hvis den andre argumentverdien eksisterer i den første argumentverdien. Substrat () -funksjonen kan ta tre argumenter. Det første argumentet er en strengverdi, det andre argumentet er startposisjonen, og det tredje argumentet er lengden. Det tredje argumentet til substr () er utelatt i følgende kommando. Fordi kolonnen starter fra $ 1 i "awk" -kommandoen, vil indeks () -funksjonen returnere $ 3, og kommandoen vil skrive ut fra $ 3 til $ 4.

$ kattemerker.tekst
$ awk 'print substr ($ 0, index ($ 0, $ 3))' merker.tekst

Følgende utdata blir produsert ved å kjøre kommandoene ovenfor.

Eksempel 8: Skriv ut et rekke kolonner fra en fil ved hjelp av printf

Følgende kommando "awk" vil skrive ut første, andre og tredje kolonne med merker.tekst ved å sette nok plass til 10 tegn.

$ kattemerker.tekst
$ awk '// printf "% 10s% 10s% 10s \ n", $ 1, $ 3, $ 2' merker.tekst

Følgende utdata blir produsert ved å kjøre kommandoene ovenfor.

Konklusjon

Det er forskjellige måter å skrive ut kolonneområdet fra kommandoutgangen eller en fil. Denne opplæringen viser hvordan 'awk' -kommandoen kan hjelpe Linux-brukere å skrive ut innhold fra tabelldata.

Hvordan bruke GameConqueror Cheat Engine i Linux
Artikkelen dekker en guide om bruk av GameConqueror-juksemotoren i Linux. Mange brukere som spiller spill på Windows bruker ofte "Cheat Engine" -appli...
Beste spillkonsollemulatorer for Linux
Denne artikkelen vil liste opp populære programvare for spillkonsollemulering tilgjengelig for Linux. Emulation er et programvarekompatibilitetslag so...
Beste Linux Distros for spill i 2021
Linux-operativsystemet har kommet langt fra det originale, enkle, serverbaserte utseendet. Dette operativsystemet har forbedret seg enormt de siste år...