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

How Print Range Columns Using Awk Command



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 å kjø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 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.