Awk

Hur man skriver ut ett antal kolumner med kommandot 'awk'

Hur man skriver ut ett antal kolumner med kommandot 'awk'
Kommandot 'awk' är ett av många kommandon som kan användas för att skriva ut ett antal kolumner från tabelldata i Linux. Kommandot "awk" kan användas direkt från terminalen genom att köra "awk" -skriptfilen. I denna handledning visar vi dig hur du skriver ut ett antal kolumner från tabelldata.

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

Följande kommando skriver ut den andra, tredje och fjärde kolumnen från kommandoutgången, 'ls -l''. Här anges kolumnnumren uttryckligen, men ett mer effektivt kommando för att skriva ut samma kolumnområde visas i nästa exempel.

$ ls -l | awk 'skriv ut $ 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 denna handledning skapar du en textfil med namnet märken.Text 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 "awk" -kommando skriver ut de första tre kolumnerna med märken.Text. De för loop används för att skriva ut kolumnvärdena och loop innehåller tre steg. De NF variabel anger det totala antalet fält eller kolumner i filen.

$ kattmärken.Text
$ awk 'för (i = 1; i<=NF-1;i++) printf $i" "; print ""' marks.txt

Följande utdata produceras genom att köra kommandot. Resultatet 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" skriver ut de första tre kolumnerna från kommandoutgången "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 itreras i en for-loop för att skriva ut kolumnvärdena.

$ ls -l | awk 'BEGIN first = 1; sista = 3
för (i = först; i < last; i++) printf("%s ", $i) print $last '

Följande utdata visas när kommandot har körts. Utgången visar de första tre kolumnvärdena för utgången, 'ls -l'.

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

Följande kommando "awk" skriver ut de tre första kolumnerna i märken.Text använder sig av tryckf och utmatningsfältavgränsare (OFS). Här innehåller for loop tre steg och tre kolumner skrivs ut i följd från filen. OFS används här för att lägga till utrymme mellan kolumner. När räknarvärdet för slingan (i) är lika med slut variabel genereras en ny rad (\ n).

$ kattmärken.Text
$ awk -v start = 1 -v end = 3 'för (i = start; i<=end;i++) printf("%s%s",
$ i, (i == slut) ? "\ n": OFS) -märken.Text

Följande utdata genereras efter att ovanstående kommandon har körts.

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

Följande kommando "awk" skriver 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 genom att använda 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 utskrift av den sista kolumnen.

$ kattmärken.Text
$ awk -v start = 2 -v end = 3 'för (i = 1; i<=NF;i++)
om (i> = start && i<=end) continue;
annars printf ("% s% s", $ i, (i!= NF) ? OFS: ORS) 'märken.Text

Följande utdata visas efter att ovanstående kommandon har körts. Utgången visar den första och sista kolumnen med märken.Text.

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

Följande kommando 'awk' skriver ut de första och sista kolumnerna från filen med 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 märken.Text. $ (NF-3) definierar den första kolumnen och $ NF anger den sista kolumnen.

$ kattmärken.Text
$ awk 'print $ (NF-3) "" $ NF' märken.Text

Följande utdata produceras genom att köra ovanstående kommandon. Utdata visar den första och sista kolumnen med märken.Text.

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

Funktionen index () returnerar en position om det andra argumentvärdet finns i det första argumentvärdet. Funktionen substr () kan ta tre argument. Det första argumentet är ett strängvärde, det andra argumentet är startpositionen 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.

$ kattmärken.Text
$ awk 'print substr ($ 0, index ($ 0, $ 3))' märken.Text

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

Exempel 8: Skriv ut ett antal kolumner från en fil med hjälp av printf

Följande kommando 'awk' skriver ut den första, andra och tredje kolumnen med märken.txt genom att ställa in tillräckligt med utrymme för 10 tecken.

$ kattmärken.Text
$ awk '// printf "% 10s% 10s% 10s \ n", $ 1, $ 3, $ 2' märken.Text

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

Slutsats

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

Hur man använder AutoKey för att automatisera Linux-spel
AutoKey är ett verktyg för desktopautomatisering för Linux och X11, programmerat i Python 3, GTK och Qt. Med hjälp av dess skript och MACRO-funktional...
Hur man visar FPS-räknare i Linux-spel
Linux-spel fick ett stort tryck när Valve tillkännagav Linux-stöd för Steam-klient och deras spel 2012. Sedan dess har många AAA- och indiespel tagit ...
Hur man laddar ner och spelar Sid Meier's Civilization VI på Linux
Introduktion till spelet Civilization 6 är ett modernt intag av det klassiska konceptet som introducerades i serien Age of Empires-spel. Idén var gans...