I denna del av vår Linux Awk kommandoserie, ska vi titta på en av de viktigaste funktionerna i Oj, som är fältredigering.
Det är bra att veta det Oj indelar automatiskt inmatade rader i fält, och ett fält kan definieras som en uppsättning tecken som separeras från andra fält med en intern fältavskiljare.
Om du är bekant med Unix/Linux eller gör programmering av bash shell, då borde du veta vilken intern fältavskiljare (IFS) variabel är. Standard IFS i Awk är flik och mellanslag.
Så fungerar idén med fältavskiljning Oj: när den möter en inmatningsrad, enligt IFS definierad, är den första uppsättningen tecken fält ett, som nås med $1, den andra teckenuppsättningen är fält två, som nås med $2, den tredje teckenuppsättningen är fält tre, som nås med $3 och så vidare till den sista uppsättningen tecken.
För att förstå denna Awk -fältredigering bättre, låt oss ta en titt på exemplen nedan:
Exempel 1: Jag har skapat en textfil som heter tecmintinfo.txt.
# vi tecmintinfo.txt. # katt tecmintinfo.txt.
Sedan försöker jag skriva ut kommandoraden först, andra och tredje fält från filen tecmintinfo.txt med kommandot nedan:
$ awk '// {print $ 1 $ 2 $ 3}' tecmintinfo.txt TecMint.comisthe.
Från utmatningen ovan kan du se att tecknen från de tre första fälten skrivs ut baserat på IFS definierat som är mellanslag:
$1
.$2
.$3
.Om du har märkt det i utskriften är fältvärdena inte separerade och så fungerar utskriften som standard.
För att se utmatningen tydligt med mellanrum mellan fältvärdena måste du lägga till (,)
operatören enligt följande:
$ awk '// {print $ 1, $ 2, $ 3; } 'tecmintinfo.txt TecMint.com är.
En viktig sak att notera och alltid komma ihåg är att användningen av ($)
i Oj skiljer sig från dess användning i skalskript.
Under shell -skript ($)
används för att komma åt värdet på variabler i Oj($)
det används endast när du får åtkomst till innehållet i ett fält men inte för att komma åt värdet på variabler.
Exempel 2: Låt oss titta på ett annat exempel med hjälp av en fil som innehåller flera rader min_shoping.list.
Inget artikelnamn Enhet_Pris Antal Pris. 1 mus #20000 1 #20000. 2 Monitor #500.000 1 #500.000. 3 RAM_Chips #150 000 2 #300 000. 4 Ethernet_kablar #30 000 4 #120 000
Säg att du bara ville skriva ut Enhetspris
för varje objekt på inköpslistan måste du köra kommandot nedan:
$ awk '// {print $ 2, $ 3}' my_shopping.txt Artikelnamn Enhet_pris. Mus #20000. Övervaka #500.000. RAM_Chips #150 000. Ethernet_kablar #30 000.
Oj har också en printf
kommando som hjälper dig att formatera din utdata är ett trevligt sätt eftersom du kan se ovanstående utdata är inte tillräckligt tydligt.
Använder sig av printf
för att formatera utdata från Föremålsnamn och Enhetspris:
$ awk '// {printf " %-10s %s \ n", $ 2, $ 3}' my_shopping.txt Artikelnamn Enhet_pris. Mus #20000. Övervaka #500.000. RAM_Chips #150 000. Ethernet_kablar #30 000.
Fältredigering är mycket viktigt vid användning Oj för att filtrera text eller strängar, hjälper det dig att få viss data i kolumner i en lista. Och kom alltid ihåg att användningen av ($)
operatör i Oj skiljer sig från den i skalskript.
Jag hoppas att artikeln var till hjälp för dig och för ytterligare information som krävs eller frågor kan du lägga upp en kommentar i kommentarsfältet.