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 CSE2021109 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 = 3for (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.