Awk

Hur man delar upp en strängfil med Awk

Hur man delar upp en strängfil med Awk
Linux awk-kommandot (förkortat från namnen på utvecklarna; Aho, Weinberger och Kernighan) är ett utmärkt sätt att bearbeta och analysera en strängfil. För att filerna ska vara mer informativa måste de organiseras i form av rader och kolumner. Sedan kan du använda awk på dessa filer för att:

I den här artikeln kommer vi att förklara den grundläggande användningen av awk-kommandot och hur det kan användas för att dela en fil av strängar. Vi har utfört exemplen från den här artikeln på ett Debian 10 Buster-system men de kan enkelt replikeras på de flesta Linux-distributioner.

Exempelfilen vi kommer att använda

Exempelfilen för strängar som vi kommer att använda för att visa användningen av awk-kommandot är följande:

Det här är vad varje kolumn i exempelfilen anger:

Exempel 1: Använd Awk för att skriva ut alla rader i en fil

Att skriva ut varje rad i en specifik fil är standardbeteendet för awk-kommandot. I följande syntax för awk-kommandot specificerar vi inte något mönster som awk ska skriva ut, så kommandot är tänkt att tillämpa "print" -åtgärden på alla rader i filen.

Syntax:

$ awk 'print' filnamn.Text

Exempel:

I det här exemplet säger jag till awk-kommandot att skriva ut innehållet i min exempelfil, rad för rad.

$ awk 'print' exempelfil.Text

Exempel 2: Använd awk för att bara skriva ut de rader som matchar ett visst mönster

Med awk kan du ange ett mönster och kommandot skriver bara ut de rader som matchar det mönstret.

Syntax:

$ awk '/ pattern_to_be_matched / print' filnamn.Text

Exempel:

Om jag bara vill skriva ut de (n) rad (ar) som innehåller variabeln "B" kan jag använda följande kommando:

$ awk '/ B / print' exempelfil.Text

För att göra exemplet mer meningsfullt, låt mig bara skriva ut informationen om anställda som är professor.

$ awk '/ professor / print' exempelfil.Text

Kommandot skriver bara ut de rader / poster som innehåller strängen "professor" så vi har mer värdefull information härledd från data.

Exempel 3. Använd awk för att dela upp filen så att endast specifika fält / kolumner skrivs ut

Istället för att skriva ut hela filen kan du göra det svårt att bara skriva ut specifika kolumner i filen. Awk behandlar alla ord, åtskilda av mellanslag, i en rad som en kolumnpost som standard. Den lagrar posten i en $ N-variabel. Där $ 1 representerar det första ordet, lagrar $ 2 det andra ordet, $ 3 det fjärde och så vidare. $ 0 lagrar hela raden så vem-raden skrivs ut, som förklaras i exempel 1.

Syntax:

$ awk 'skriv ut $ N, .. .' filnamn.Text

Exempel:

Följande kommando skriver bara ut den första kolumnen (namn) och den andra kolumnen (ämne) i min exempelfil:

$ awk 'print $ 1, $ 2' sample_file.Text

Exempel 4: Använd Awk för att räkna och skriva ut antalet rader där ett mönster matchas

Du kan be awk att räkna antalet rader där ett angivet mönster matchas och sedan mata ut det "räkna".

Syntax:

$ awk '/ pattern_to_be_matched / ++ cnt END print "Count =", cnt'
filnamn.Text

Exempel:

I det här exemplet vill jag räkna antalet personer som undervisar ämnet "engelska". Därför säger jag till kommandot awk att matcha mönstret "engelska" och skriva ut antalet rader där mönstret matchas.

$ awk '/ engelska / ++ cnt END print "Count =", cnt' sample_file.Text

Räkningen här föreslår att 2 personer undervisar engelska från exempelfilen.

Exempel 5: Använd awk för att bara skriva ut rader med mer än ett specifikt antal tecken

För denna uppgift kommer vi att använda den inbyggda awk-funktionen som kallas "längd". Den här funktionen returnerar längden på inmatningssträngen. Således, om vi bara vill skriva ut rader med mer än eller till och med mindre än antalet tecken kan vi använda längdfunktionen på följande sätt:

För att skriva ut linjer med tecken som är större än ett tal:

$ awk 'längd ($ 0)> n' filnamn.Text

För att skriva ut linjer med tecken mindre än ett tal:

$ awk-längd ($ 0) < n' filename.txt

Där n är antalet tecken som du vill ange för en rad.

Exempel:

Följande kommando skriver bara ut raderna från min exempelfil som har tecken mer än 30:

$ awk 'längd ($ 0)> 30' sample_file.Text

Exempel 6: Använd awk för att spara kommandoutgången till en annan fil

Genom att använda omdirigeringsoperatören '>' kan du använda kommandot awk för att skriva ut utdata till en annan fil. Så här kan du använda den:

$ awk 'criteria_to_print "filnamn.txt> utdatafil.Text

Exempel:

I det här exemplet kommer jag att använda omdirigeringsoperatören med mitt awk-kommando för att bara skriva ut namnen på de anställda (kolumn 1) till en ny fil:

$ awk 'print $ 1' sample_file.txt> medarbetarnamn.Text

Jag bekräftade genom kattkommandona att den nya filen bara innehåller namnen på de anställda.

Exempel 7: Använd awk för att bara skriva ut icke-tomma rader från en fil

Awk har några inbyggda kommandon som du kan använda för att filtrera utdata. Till exempel används NF-kommandot för att hålla ett antal av fälten inom den aktuella ingångsposten. Här använder vi kommandot NF för att bara skriva ut de icke-tomma raderna i filen:

$ awk 'NF> 0' sample_file.Text

Uppenbarligen kan du använda följande kommando för att skriva ut de tomma raderna:

$ awk 'NF < 0' sample_file.txt

Exempel 8: Använd awk för att räkna de totala raderna i en fil

En annan inbyggd funktion, kallad NR, räknar antalet ingångsposter (vanligtvis rader) för en viss fil. Du kan använda den här funktionen i awk som följer för att räkna antalet rader i en fil:

$ awk 'END print NR' sample_file.Text

Detta var den grundläggande informationen du behöver för att börja med att dela filer med kommandot awk. Du kan använda kombinationen av dessa exempel för att hämta mer meningsfull information från din fil av strängar genom awk.

Mus Så här vänder du mus- och styrplattans rullningsriktning i Windows 10
Så här vänder du mus- och styrplattans rullningsriktning i Windows 10
Mus och Pekplattas gör inte bara datoranvändning lättare men effektivare och mindre tidskrävande. Vi kan inte föreställa oss ett liv utan dessa enhete...
Mus Så här ändrar du muspekare och markörstorlek, färg och schema på Windows 10
Så här ändrar du muspekare och markörstorlek, färg och schema på Windows 10
Muspekaren och markören i Windows 10 är mycket viktiga aspekter av operativsystemet. Detta kan också sägas för andra operativsystem, så i sanning är d...
Gratis och öppen källkodsmotorer för utveckling av Linux-spel
Den här artikeln kommer att täcka en lista över gratis motorer med öppen källkod som kan användas för att utveckla 2D- och 3D-spel på Linux. Det finns...