Eksempel 1: Skriv ut en rekke kolonner fra en kommandoutgang
Følgende kommando vil skrive ut den andre, tredje og fjerde kolonnen fra kommandoutgangen, ‘Ls -l '. Her angis kolonnetallene eksplisitt, men en mer effektiv kommando for utskrift av det samme spekteret av kolonner er vist i neste eksempel.
$ls -de | awk '{print $ 2, $ 3, $ 4}'
Følgende utgang produseres av kommandoen ovenfor.
Eksempel 2: Skriv ut kolonneområdet fra en fil ved å bruke en til Løkke
For å følge med dette eksemplet og de andre eksemplene i denne opplæringen, oppretter du en tekstfil med navnet merker.txt 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 marks.txt. De til loop brukes til å skrive ut kolonneverdiene, og loopet inneholder tre trinn. De NF variabel indikerer det totale antallet felt eller kolonner i filen.
$kattmerker.txt$awk '{for (i = 1; i<=NF-1;i++) printf $i' '; print ''}'merker.txt
Følgende utdata vil bli produsert ved å kjøre kommandoen. Utgangen viser eleven 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 slutt variabler. Her er verdien av starter variabelen er 1, og verdien av slutt variabel er 3. Disse variablene blir iterert over i en for loop for å skrive ut kolonneverdiene.
$ls -de | awk 'BEGIN {first = 1; siste = 3}{for (i = først; i
Følgende utdata vises etter at du har kjørt kommandoen. Utgangen viser de tre første kolonneverdiene for 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 av merker.txt ved hjelp av printf og utgangsfeltskilletegn ( OFS ). Her inneholder for -løkken tre trinn, og tre kolonner skrives ut i rekkefølge fra filen. OFS brukes her for å legge til mellomrom mellom kolonner. Når telleverdien til sløyfen (i) er lik slutt variabel, så genereres en ny linje ( n).
$kattmerker.txt$awk -v start=1 -v slutt=3 '{for (i = start; i<=end;i++) printf('%s%s',
$ i, (i == ende)? ' n': OFS)} 'merker.txt
Følgende utdata genereres etter at du har kjørt kommandoene ovenfor.
Eksempel 5: Skriv ut kolonneområdet fra en fil ved hjelp av en betinget setning
Følgende kommando `awk` vil skrive ut de første og siste kolonnene fra en fil ved å bruke en for loop og en if -setning. Her inkluderer for -løkken fire trinn. De starter og slutt variabler brukes i skriptet for å utelate den andre og tredje kolonnen fra filen ved å bruke if -betingelsen. OFS -variabelen brukes til å legge til mellomrom mellom kolonnene, og ORS -variabelen brukes til å legge til en ny linje ( n) etter at den siste kolonnen er skrevet ut.
$kattmerker.txt$awk -v start=2 -v slutt=3 '{for (i = 1; i<=NF;i++)
hvis (i> = start && i<=end) continue;
annet printf ('%s%s', $ i, (i! = NF)? OFS: ORS)} 'merker.txt
Følgende utdata vises etter at du har kjørt kommandoene ovenfor. Utgangen viser den første og siste kolonnen med marks.txt.
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 looper eller betingede setninger brukes til å skrive ut kolonneverdiene. NF angir antall felt. Det er fire kolonner i marks.txt. $ (NF-3) definerer den første kolonnen, og $ NF angir den siste kolonnen.
$kattmerker.txt$awk '{print $ (NF-3)' '$ NF}'merker.txt
Følgende utdata produseres ved å kjøre kommandoene ovenfor. Utgangen viser den første og siste kolonnen med marks.txt.
Eksempel 7: Skriv ut kolonneområdet fra en fil ved hjelp av substr () og indeks ()
Indeksen () -funksjonen returnerer en posisjon hvis den andre argumentverdien finnes i den første argumentverdien. Substra () -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 () utelates i den følgende kommandoen. Fordi kolonnen starter fra $ 1 i kommandoen `awk`, returnerer indeksen () -funksjonen $ 3, og kommandoen skrives ut fra $ 3 til $ 4.
$kattmerker.txt$awk '{print substr ($ 0, index ($ 0, $ 3))}}'merker.txt
Følgende utdata vil bli produsert ved å kjøre kommandoene ovenfor.
Eksempel 8: Skriv ut en rekke kolonner fra en fil ved hjelp av printf
Følgende kommando `awk` vil skrive ut den første, andre og tredje kolonnen med marks.txt ved å angi nok plass til 10 tegn.
$kattmerker.txt$awk '// {printf' %10s %10s %10s n ', $ 1, $ 3, $ 2}'merker.txt
Følgende utdata vil bli produsert ved å kjøre kommandoene ovenfor.
Konklusjon
Det er forskjellige måter å skrive ut spekteret av kolonner fra kommandoutgangen eller en fil. Denne opplæringen viser hvordan kommandoen `awk` kan hjelpe Linux -brukere med å skrive ut innhold fra tabelldata.