Hur man skriver ut en rad kolumner med kommandot `awk`

How Print Range Columns Using Awk Command



Kommandot `awk` är ett av många kommandon som kan användas för att skriva ut en rad kolumner från tabelldata i Linux. Kommandot 'awk' kan användas direkt från terminalen genom att köra 'awk' -skriptfilen. I den här självstudien visar vi hur du skriver ut ett antal kolumner från tabelldata.

Exempel 1: Skriv ut ett antal kolumner från en kommandoutmatning

Följande kommando kommer att skriva ut den andra, tredje och fjärde kolumnen från kommandoutmatningen, ’Ls -l ’. Här anges kolumnnumren uttryckligen, men ett mer effektivt kommando för att skriva ut samma kolumnintervall visas i nästa exempel.







$ls -de | ock '{print $ 2, $ 3, $ 4}'

Följande utdata produceras av kommandot ovan.





Exempel 2: Skriv ut kolumnintervallet från en fil med hjälp av a för slinga

För att följa med detta exempel och de andra exemplen i den här självstudien, skapa en textfil med namnet marks.txt med följande innehåll :





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öljande kommando `awk` kommer att skriva ut de tre första kolumnerna med marks.txt. De för loop används för att skriva ut kolumnvärdena, och slingan innehåller tre steg. De NF variabel anger det totala antalet fält eller kolumner i filen.

$kattmarks.txt
$ock '{för (i = 1; i<=NF-1;i++) printf $i' '; print ''}'marks.txt

Följande utdata kommer att produceras genom att köra kommandot. Utdata visar eleven ID och märkena för CSE203 och CSE102 .



Exempel 3: Skriv ut kolumnintervallet genom att definiera start- och slutvariabler

Följande kommando 'awk' kommer att skriva ut de tre första kolumnerna från kommandoutmatningen 'ls -l' genom att initiera startande och slut variabler. Här är värdet på startande variabeln är 1 och värdet på slut variabel är 3. Dessa variabler upprepas i en for loop för att skriva ut kolumnvärdena.

$ls -de | ock 'BÖRJA {första = 1; sista = 3}
{för (i = först; i

Följande utdata visas efter att kommandot körts. Utdata visar de tre första kolumnvärdena för utdata, 'ls -l'.

Exempel 4: Skriv ut ett antal kolumner från en fil med formatering

Följande kommando `awk` kommer att skriva ut de tre första kolumnerna i marks.txt använder sig av printf och utmatningsfältavskiljare ( OFS ). Här innehåller for -loop tre steg, och tre kolumner kommer att skrivas ut i följd från filen. OFS används här för att lägga till mellanrum mellan kolumner. När slingans (i) räknarvärde är lika med slut variabel genereras en ny rad ( n).

$kattmarks.txt
$ock -v Start=1 -v slutet=3 '{för (i = start; i<=end;i++) printf('%s%s',
$ i, (i == slut)? ' n': OFS)} '
marks.txt

Följande utdata genereras efter att ha kört ovanstående kommandon.

Exempel 5: Skriv ut kolumnintervallet från en fil med ett villkorligt uttalande

Följande kommando `awk` kommer att skriva ut de första och sista kolumnerna från en fil med hjälp av en for loop och en if -sats. Här innehåller for -slingan fyra steg. De startande och slut variabler används i skriptet för att utelämna den andra och tredje kolumnen från filen med hjälp av if -villkoret. OFS -variabeln används för att lägga till utrymme mellan kolumnerna, och ORS -variabeln används för att lägga till en ny rad ( n) efter att den sista kolumnen har skrivits ut.

$kattmarks.txt
$ock -v Start=2 -v slutet=3 '{för (i = 1; i<=NF;i++)
om (i> = start && i<=end) continue;
annars printf ('%s%s', $ i, (i! = NF)? OFS: ORS)} '
marks.txt

Följande utdata visas efter att ha kört ovanstående kommandon. Utdata visar de första och sista kolumnerna med marks.txt.

Exempel 6: Skriv ut kolumnintervallet från en fil med NF -variabeln

Följande kommando `awk` kommer att skriva ut de första och sista kolumnerna från filen med hjälp av en NF -variabel. Inga loopar eller villkorliga uttalanden används för att skriva ut kolumnvärdena. NF anger antalet fält. Det finns fyra kolumner i marks.txt. $ (NF-3) definierar den första kolumnen och $ NF anger den sista kolumnen.

$kattmarks.txt
$ock '{print $ (NF-3)' '$ NF}'marks.txt

Följande utdata produceras genom att köra ovanstående kommandon. Utdata visar de första och sista kolumnerna med marks.txt.

Exempel 7: Skriv ut kolumnintervallet från en fil med hjälp av substr () och index ()

Index () -funktionen returnerar en position om det andra argumentvärdet finns i det första argumentvärdet. Substra () -funktionen kan ta tre argument. Det första argumentet är ett strängvärde, det andra argumentet är utgångsläget och det tredje argumentet är längden. Det tredje argumentet för substr () utelämnas i följande kommando. Eftersom kolumnen börjar från $ 1 i kommandot `awk` returnerar index () -funktionen $ 3 och kommandot skrivs ut från $ 3 till $ 4.

$kattmarks.txt
$ock '{print substr ($ 0, index ($ 0, $ 3))}}'marks.txt

Följande utdata kommer att produceras genom att köra ovanstående kommandon.

Exempel 8: Skriv ut ett antal kolumner i sekvens från en fil med printf

Följande kommando `awk` kommer att skriva ut den första, andra och tredje kolumnerna med marks.txt genom att ställa in tillräckligt med utrymme för 10 tecken.

$kattmarks.txt
$ock '// {printf' %10s %10s %10s n ', $ 1, $ 3, $ 2}'marks.txt

Följande utdata kommer att produceras genom att köra ovanstående kommandon.

Slutsats

Det finns olika sätt att skriva ut kolumnintervallet från kommandoutmatningen eller en fil. Denna handledning visar hur kommandot 'awk' kan hjälpa Linux -användare att skriva ut innehåll från tabelldata.