Sådan udskrives en række kolonner ved hjælp af kommandoen `awk`

How Print Range Columns Using Awk Command



Kommandoen `awk` er en af ​​mange kommandoer, der kan bruges til at udskrive en række kolonner fra tabeldata i Linux. Kommandoen `awk` kan bruges direkte fra terminalen ved at udføre` awk` -scriptfilen. I denne vejledning viser vi dig, hvordan du udskriver en række kolonner fra tabeldata.

Eksempel 1: Udskriv en række kolonner fra et kommandoutput

Den følgende kommando udskriver den anden, tredje og fjerde kolonne fra kommandoudgangen, ’Ls -l '. Her angives kolonnetallet eksplicit, men en mere effektiv kommando til udskrivning af det samme område af kolonner er vist i det næste eksempel.







$ls -det | awk '{print $ 2, $ 3, $ 4}'

Følgende output produceres af kommandoen ovenfor.





Eksempel 2: Udskriv kolonneområdet fra en fil ved hjælp af en til sløjfe

For at følge med dette eksempel og de andre eksempler i denne vejledning skal du oprette en tekstfil med navnet mærker.txt med følgende indhold :





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` udskriver de tre første kolonner med mærker.txt. Det til loop bruges til at udskrive kolonneværdierne, og loopet indeholder tre trin. Det NF variabel angiver det samlede antal felter eller kolonner i filen.

$katmærker.txt
$awk '{for (i = 1; i<=NF-1;i++) printf $i' '; print ''}'mærker.txt

Følgende output produceres ved at køre kommandoen. Output viser eleven ID'er og mærkerne for CSE203 og CSE102 .



Eksempel 3: Udskriv rækkevidden af ​​kolonner ved at definere start- og slutningsvariabler

Den følgende kommando `awk` udskriver de tre første kolonner fra kommandoudgangen 'ls -l' ved at initialisere starter og Slutning variabler. Her er værdien af starter variabel er 1, og værdien af Slutning variabel er 3. Disse variabler gentages i en for loop for at udskrive kolonneværdierne.

$ls -det | awk 'BEGYNN {første = 1; sidste = 3}
{for (i = først; i

Følgende output vises efter at have kørt kommandoen. Outputtet viser de tre første kolonneværdier for output, 'ls -l'.

Eksempel 4: Udskriv en række kolonner fra en fil med formatering

Den følgende kommando `awk` udskriver de tre første kolonner af mærker.txt ved brug af printf og outputfeltudskiller ( OFS ). Her indeholder for -løkken tre trin, og tre kolonner udskrives i rækkefølge fra filen. OFS bruges her til at tilføje mellemrum mellem kolonner. Når tællerværdien af ​​sløjfen (i) er lig med Slutning variabel, så genereres en ny linje ( n).

$katmærker.txt
$awk -v Start=1 -v ende=3 '{for (i = start; i<=end;i++) printf('%s%s',
$ i, (i == slut)? ' n': OFS)} '
mærker.txt

Følgende output genereres efter kørsel af ovenstående kommandoer.

Eksempel 5: Udskriv kolonneområdet fra en fil ved hjælp af en betinget erklæring

Følgende kommando `awk` udskriver de første og sidste kolonner fra en fil ved hjælp af en for loop og en if -sætning. Her indeholder for -løkken fire trin. Det starter og Slutning variabler bruges i scriptet til at udelade den anden og tredje kolonne fra filen ved hjælp af if -betingelsen. OFS -variablen bruges til at tilføje mellemrum mellem kolonnerne, og ORS -variablen bruges til at tilføje en ny linje ( n) efter udskrivning af den sidste kolonne.

$katmærker.txt
$awk -v Start=2 -v ende=3 '{for (i = 1; i<=NF;i++)
hvis (i> = start && i<=end) continue;
ellers printf ('%s%s', $ i, (i! = NF)? OFS: ORS)} '
mærker.txt

Følgende output vises efter kørsel af ovenstående kommandoer. Outputtet viser den første og sidste kolonne med mærker.txt.

Eksempel 6: Udskriv kolonneområdet fra en fil ved hjælp af NF -variablen

Følgende kommando `awk` udskriver de første og sidste kolonner fra filen ved hjælp af en NF -variabel. Der bruges ingen sløjfer eller betingede udsagn til at udskrive kolonneværdierne. NF angiver antallet af felter. Der er fire kolonner i marks.txt. $ (NF-3) definerer den første kolonne, og $ NF angiver den sidste kolonne.

$katmærker.txt
$awk '{print $ (NF-3)' '$ NF}'mærker.txt

Følgende output produceres ved at køre ovenstående kommandoer. Outputtet viser den første og sidste kolonne med mærker.txt.

Eksempel 7: Udskriv række af kolonner fra en fil ved hjælp af substr () og indeks ()

Indeksen () -funktionen returnerer en position, hvis den anden argumentværdi findes i den første argumentværdi. Substra () -funktionen kan tage tre argumenter. Det første argument er en strengværdi, det andet argument er startpositionen, og det tredje argument er længden. Det tredje argument for substr () udelades i den følgende kommando. Fordi kolonnen starter fra $ 1 i kommandoen `awk`, returnerer index () -funktionen $ 3, og kommandoen udskrives fra $ 3 til $ 4.

$katmærker.txt
$awk '{print substr ($ 0, index ($ 0, $ 3))}' 'mærker.txt

Følgende output produceres ved at køre ovenstående kommandoer.

Eksempel 8: Udskriv sekventielt en række kolonner fra en fil ved hjælp af printf

Følgende kommando `awk` udskriver den første, anden og tredje kolonne med mærker.txt ved at angive plads nok til 10 tegn.

$katmærker.txt
$awk '// {printf' %10s %10s %10s n ', $ 1, $ 3, $ 2}'mærker.txt

Følgende output produceres ved at køre ovenstående kommandoer.

Konklusion

Der er forskellige måder at udskrive række af kolonner fra kommandoutputtet eller en fil. Denne vejledning viser, hvordan kommandoen `awk` kan hjælpe Linux -brugere med at udskrive indhold fra tabeldata.