INNEHÅLL
- Förstå AWK -program
- Praktiska exempel på awk Command i Linux
- 1. Skriv ut specifika fält från textutmatning
- 2. Skriv ut flera fält från textutmatning
- 3. Använd BEGIN -uttalanden
- 4. Använd SLUT -uttalanden
- 5. Sök med hjälp av mönster
- 6. Extrahera information från filer
- 7. Läs AWK -skript från källfilen
- 8. Ställ in inmatningsfältet
- 9. Skriv ut information baserat på skick
- 10. Skriv ut information genom att jämföra vanliga uttryck
- 11. Räkna det totala antalet rader i inmatning
- 12. Ställ in utmatningsfältavskiljare
- 13. Använda If Construct
- 14. Använda If-Else Constructs
- 15. Ställ in fältbredden
- 16. Ställ in inspelningsseparatorn
- 17. Utskriftsmiljövariabler
- 18. Utelämna vissa fält från utdata
- 19. Ta bort tomma linjer
- 20. Ta bort släpande blanksteg
- 21. Kontrollera antalet fält i varje rad
- 22. Verifiera aktuellt filnamn
- 23. Verifiera antalet bearbetade poster
- 24. Skriv ut det totala antalet tecken i en post
- 25. Skriv ut alla rader längre än en angiven längd
- 26. Skriv ut antalet rader, tecken och ord
- 27. Beräkna ordfrekvens
- 28. Byt namn på filer med AWK
- 29. Skriv ut ett fyrkantigt rot av ett nummer
- 30. Skriv ut logaritmen för ett tal
- 31. Skriv ut ett tals exponential
- 32. Generera slumpmässiga nummer med AWK
- 33. Färgkompilatorvarningar i rött
- 34. Skriv ut UUID -informationen för filsystemet
- 35. Skriv ut Linux Kernel Image Version
- 36. Lägg till radnummer före rader
- 37. Skriv ut en fil efter att innehållet har sorterats
- 38. Skriv ut den manuella sidan
- 39. Skriv ut hjälpsidan
- 40. Skriv ut versioninformation
- Avslutande tankar
AWK är ett kraftfullt> fullfjädrat programmeringsspråk . AWK får sitt namn från initialerna till dess författare - Aho, Weinberger och Kernighan. Awk -kommandot i Linux och andra Unix -system åberopar tolken som kör AWK -skript. Flera implementeringar av awk finns i de senaste systemen som bland annat gawk (GNU awk), mawk (Minimal awk) och nawk (New awk). Kolla in exemplen nedan om du vill behärska awk.
Förstå AWK -program
Program skrivna i awk består av regler, som helt enkelt är ett par mönster och handlingar. Mönstren är grupperade i en tandställning {}, och åtgärdsdelen utlöses när awk hittar texter som matchar mönstret. Även om awk utvecklades för att skriva enliners, kan erfarna användare enkelt skriva komplexa skript med det.
AWK-program är mycket användbara för storskalig filbehandling. Det identifierar textfält med specialtecken och separatorer. Det erbjuder också programmeringskonstruktioner på hög nivå som arrays och loopar. Så att skriva robusta program med vanlig awk är mycket genomförbart.
Praktiska exempel på awk Command i Linux
Administratörer använder normalt awk för datautvinning och rapportering tillsammans med andra typer av filmanipulationer. Nedan har vi diskuterat awk mer detaljerat. Följ kommandona noga och prova dem i din terminal för en fullständig förståelse.
1. Skriv ut specifika fält från textutmatning
Mest mycket använda Linux -kommandon visa sin produktion med olika fält. Normalt använder vi Linux cut -kommandot för att extrahera ett specifikt fält från sådana data. Kommandot nedan visar dig dock hur du gör detta med kommandot awk.
$ who | awk '{print }'
Detta kommando visar bara det första fältet från utdata från who -kommandot. Så du får helt enkelt användarnamnen för alla loggade användare. Här, $ 1 representerar det första fältet. Du måste använda $ N om du vill extrahera det n: e fältet.
2. Skriv ut flera fält från textutmatning
Awk -tolken gör att vi kan skriva ut hur många fält som helst. Nedanstående exempel visar hur vi extraherar de två första fälten från utdata från who -kommandot.
$ who | awk '{print , }'
Du kan också styra ordningen på utdatafälten. Följande exempel visar först den andra kolumnen som produceras av who -kommandot och sedan den första kolumnen i det andra fältet.
$ who | awk '{print , }'
Lämna bara fältparametrarna ( $ N ) för att visa hela data.
3. Använd BEGIN -uttalanden
BEGIN -satsen tillåter användare att skriva ut viss känd information i utdata. Det används vanligtvis för att formatera utdata som genereras av awk. Syntaxen för detta uttalande visas nedan.
BEGIN { Actions} {ACTION}
De åtgärder som bildar BEGIN -sektionen utlöses alltid. Sedan läser awk de återstående raderna en efter en och ser om något behöver göras.
$ who | awk 'BEGIN {print 'User From'} {print , }'
Kommandot ovan kommer att märka de två utmatningsfälten som extraheras från who -kommandot.
4. Använd SLUT -uttalanden
Du kan också använda END -satsen för att se till att vissa åtgärder alltid utförs i slutet av din operation. Placera helt enkelt END -sektionen efter huvuduppsättningen.
$ who | awk 'BEGIN {print 'User From'} {print , } END {print '--COMPLETED--'}'
Kommandot ovan kommer att lägga till den givna strängen i slutet av utdata.
5. Sök med hjälp av mönster
En stor del av awks arbete innebär mönstermatchning och regex. Som vi redan har diskuterat, söker awk efter mönster i varje inmatningsrad och utför bara åtgärden när en matchning utlöses. Våra tidigare regler bestod av endast handlingar. Nedan har vi illustrerat grunderna för mönstermatchning med hjälp av kommandot awk i Linux.
$ who | awk '/mary/ {print}'
Detta kommando kommer att se om användaren mary för närvarande är inloggad eller inte. Det kommer att mata ut hela raden om någon matchning hittas.
6. Extrahera information från filer
Kommandot awk fungerar mycket bra med filer och kan användas för komplexa filbehandlingsuppgifter. Följande kommando illustrerar hur awk hanterar filer.
$ awk '/hello/ {print}' /usr/share/dict/american-english
Detta kommando söker efter mönstret 'hej' i den amerikansk-engelska ordlistfilen. Den finns på de flesta Linux-baserade distributioner . Således kan du enkelt prova awk -program på den här filen.
7. Läs AWK -skript från källfilen
Även om det är användbart att skriva enlinjeprogram, kan du också skriva stora program med awk helt. Du vill spara dem och köra ditt program med hjälp av källfilen.
$ awk -f script-file $ awk --file script-file
De -f eller -fil alternativet låter oss ange programfilen. Du behöver dock inte använda citattecken (‘‘) inuti skriptfilen eftersom Linux-skalet inte tolkar programkoden på detta sätt.
8. Ställ in inmatningsfältet
En fältavskiljare är en avgränsare som delar inmatningsposten. Vi kan enkelt ange fältavskiljare att awk med hjälp av -F eller –Fältavskiljare alternativ. Kolla in kommandona nedan för att se hur detta fungerar.
$ echo 'This-is-a-simple-example' | awk -F - ' {print } ' $ echo 'This-is-a-simple-example' | awk --field-separator - ' {print } '
Det fungerar på samma sätt när man använder skriptfiler snarare än ett-linjers awk-kommando i Linux.
9. Skriv ut information baserat på skick
Vi har diskuterat kommandot Linux cut i en tidigare guide. Nu visar vi dig hur du extraherar information med hjälp av awk endast när vissa kriterier matchas. Vi kommer att använda samma testfil som vi använde i den guiden. Så gå dit och gör en kopia av test.txt fil.
$ awk ' > 50' test.txt
Detta kommando kommer att skriva ut alla nationer från filen test.txt, som har mer än 50 miljoner invånare.
10. Skriv ut information genom att jämföra vanliga uttryck
Följande awk -kommando kontrollerar om det tredje fältet på en rad innehåller mönstret 'Lira' och skriver ut hela raden om en matchning hittas. Vi använder igen filen test.txt som används för att illustrera Linux cut -kommando . Så se till att du har den här filen innan du fortsätter.
$ awk ' ~ /Lira/' test.txt
Du kan välja att bara skriva ut en viss del av en matchning om du vill.
11. Räkna det totala antalet rader i inmatning
Kommandot awk har många specialvariabler som gör att vi enkelt kan göra många avancerade saker. En sådan variabel är NR, som innehåller det aktuella radnumret.
$ awk 'END {print NR} ' test.txt
Detta kommando kommer att mata ut hur många rader som finns i vår test.txt -fil. Den upprepas först över varje rad, och när den har nått END kommer den att skriva ut värdet på NR - som innehåller det totala antalet rader i det här fallet.
12. Ställ in utmatningsfältavskiljare
Tidigare har vi visat hur man väljer inmatningsfältavskiljare med -F eller –Fältavskiljare alternativ. Kommandot awk låter oss också ange utmatningsfältavskiljaren. Nedanstående exempel visar detta med hjälp av ett praktiskt exempel.
$ date | awk 'OFS='-' {print,,}'
Detta kommando skriver ut det aktuella datumet med formatet dd-mm-åå. Kör datumprogrammet utan awk för att se hur standardutmatningen ser ut.
13. Använda If Construct
Som andra populära programmeringsspråk , awk ger också användare if-else-konstruktionerna. If -satsen i awk har syntaxen nedan.
if (expression) { first_action second_action }
Motsvarande åtgärder utförs endast om det villkorliga uttrycket är sant. Nedanstående exempel visar detta med hjälp av vår referensfil test.txt .
$ awk '{ if (>100) print }' test.txt
Du behöver inte behålla indragningen strikt.
14. Använda If-Else Constructs
Du kan konstruera användbara if-else-stegar med syntaxen nedan. De är användbara vid utformning av komplexa awk -skript som hanterar dynamisk data.
if (expression) first_action else second_action
$ awk '{ if (>100) print; else print }' test.txt
Kommandot ovan kommer att skriva ut hela referensfilen eftersom det fjärde fältet inte är större än 100 för varje rad.
15. Ställ in fältbredden
Ibland är inmatningsdatan ganska rörig, och användare kan ha svårt att visualisera dem i sina rapporter. Lyckligtvis ger awk en kraftfull inbyggd variabel som kallas FIELDWIDTHS som gör att vi kan definiera en blankstegsseparerad lista med bredder.
hur man använder medelfunktionen i Excel
$ echo 5675784464657 | awk 'BEGIN {FIELDWIDTHS= '3 4 5'} {print , , }'
Det är mycket användbart vid analys av spridda data eftersom vi kan styra utmatningsfältets bredd exakt som vi vill.
16. Ställ in inspelningsseparatorn
RS eller Record Separator är en annan inbyggd variabel som gör att vi kan ange hur poster separeras. Låt oss först skapa en fil som visar hur denna awk -variabel fungerar.
$ cat new.txt Melinda James 23 New Hampshire (222) 466-1234 Daniel James 99 Phonenix Road (322) 677-3412
$ awk 'BEGIN{FS=' '; RS=''} {print ,}' new.txt
Detta kommando kommer att analysera dokumentet och spotta ut namn och adress för de två personerna.
17. Utskriftsmiljövariabler
Kommandot awk i Linux gör att vi enkelt kan skriva ut miljövariabler med variabeln ENVIRON. Kommandot nedan visar hur du använder detta för att skriva ut innehållet i PATH -variabeln.
$ awk 'BEGIN{ print ENVIRON['PATH'] }'
Du kan skriva ut innehållet i alla miljövariabler genom att ersätta ENVIRON -variabelns argument. Kommandot nedan skriver ut värdet på miljövariabeln HEM.
$ awk 'BEGIN{ print ENVIRON['HOME'] }'
18. Utelämna vissa fält från utdata
Kommandot awk tillåter oss att utelämna specifika rader från vår produktion. Följande kommando visar detta med hjälp av vår referensfil test.txt .
$ awk -F':' '{=''; print}' test.txt
Detta kommando kommer att utelämna den andra kolumnen i vår fil, som innehåller huvudstadsnamnet för varje land. Du kan också utelämna mer än ett fält, som visas i nästa kommando.
$ awk -F':' '{='';='';print}' test.txt
19. Ta bort tomma linjer
Ibland kan data innehålla för många tomma rader. Du kan använda kommandot awk för att ta bort tomma rader ganska enkelt. Kolla in nästa kommando för att se hur det fungerar i praktiken.
$ awk '/^[ ]*$/{next}{print}' new.txt
Vi har tagit bort alla tomma rader från filen new.txt med ett enkelt reguljärt uttryck och en awk inbyggd kallas nästa.
20. Ta bort släpande blanksteg
Utdata från många Linux -kommandon innehåller efterföljande blanksteg. Vi kan använda kommandot awk i Linux för att ta bort sådana blanksteg som mellanslag och flikar. Kolla in kommandot nedan för att se hur du hanterar sådana problem med hjälp av awk.
$ awk '{sub(/[ ]*$/, '');print}' new.txt test.txt
Lägg till några efterföljande blanksteg i våra referensfiler och verifiera om awk tog bort dem framgångsrikt eller inte. Det gjorde detta framgångsrikt i min maskin.
21. Kontrollera antalet fält i varje rad
Vi kan enkelt kontrollera hur många fält som finns i en rad med hjälp av en enkel awk one-liner. Det finns många sätt att göra detta, men vi kommer att använda några av awks inbyggda variabler för denna uppgift. NR -variabeln ger oss radnumret och NF -variabeln anger antalet fält.
$ awk '{print NR,'-->',NF}' test.txt
Nu kan vi bekräfta hur många fält det finns per rad i vårt test.txt dokumentera. Eftersom varje rad i den här filen innehåller fem fält är vi säkra på att kommandot fungerar som förväntat.
22. Verifiera aktuellt filnamn
Awk -variabeln FILENAME används för att verifiera det aktuella inmatningsfilnamnet. Vi visar hur detta fungerar med ett enkelt exempel. Det kan dock vara användbart i situationer där filnamnet inte är känt uttryckligen eller om det finns mer än en inmatningsfil.
$ awk '{print FILENAME}' test.txt $ awk '{print FILENAME}' test.txt new.txt
Kommandona ovan skriver ut filnamnet awk arbetar på varje gång det behandlar en ny rad med inmatningsfiler.
23. Verifiera antalet bearbetade poster
Följande exempel visar hur vi kan verifiera antalet poster som behandlats av kommandot awk. Eftersom ett stort antal Linux -systemadministratörer använder awk för att generera rapporter är det mycket användbart för dem.
$ awk '{print 'Processing Record - ',NR;} END {print ' Total Records Processed:', NR;}' test.txt
Jag använder ofta detta awk -snutt för att ha en tydlig översikt över mina handlingar. Du kan enkelt justera den för att rymma nya idéer eller handlingar.
24. Skriv ut det totala antalet tecken i en post
Awk -språket ger en praktisk funktion som kallas length () som berättar hur många tecken som finns i en post. Det är mycket användbart i ett antal scenarier. Ta en snabb titt på följande exempel för att se hur detta fungerar.
$ echo 'A random text string...' | awk '{ print length(Hem A-Z-kommandon 40 Praktiskt och användbart awk -kommando i Linux och BSD FörbiMehedi Hasan IA-Z-kommandonUtvalda 1271 7 ); }'INNEHÅLL
- Förstå AWK -program
- Praktiska exempel på awk Command i Linux
- 1. Skriv ut specifika fält från textutmatning
- 2. Skriv ut flera fält från textutmatning
- 3. Använd BEGIN -uttalanden
- 4. Använd SLUT -uttalanden
- 5. Sök med hjälp av mönster
- 6. Extrahera information från filer
- 7. Läs AWK -skript från källfilen
- 8. Ställ in inmatningsfältet
- 9. Skriv ut information baserat på skick
- 10. Skriv ut information genom att jämföra vanliga uttryck
- 11. Räkna det totala antalet rader i inmatning
- 12. Ställ in utmatningsfältavskiljare
- 13. Använda If Construct
- 14. Använda If-Else Constructs
- 15. Ställ in fältbredden
- 16. Ställ in inspelningsseparatorn
- 17. Utskriftsmiljövariabler
- 18. Utelämna vissa fält från utdata
- 19. Ta bort tomma linjer
- 20. Ta bort släpande blanksteg
- 21. Kontrollera antalet fält i varje rad
- 22. Verifiera aktuellt filnamn
- 23. Verifiera antalet bearbetade poster
- 24. Skriv ut det totala antalet tecken i en post
- 25. Skriv ut alla rader längre än en angiven längd
- 26. Skriv ut antalet rader, tecken och ord
- 27. Beräkna ordfrekvens
- 28. Byt namn på filer med AWK
- 29. Skriv ut ett fyrkantigt rot av ett nummer
- 30. Skriv ut logaritmen för ett tal
- 31. Skriv ut ett tals exponential
- 32. Generera slumpmässiga nummer med AWK
- 33. Färgkompilatorvarningar i rött
- 34. Skriv ut UUID -informationen för filsystemet
- 35. Skriv ut Linux Kernel Image Version
- 36. Lägg till radnummer före rader
- 37. Skriv ut en fil efter att innehållet har sorterats
- 38. Skriv ut den manuella sidan
- 39. Skriv ut hjälpsidan
- 40. Skriv ut versioninformation
- Avslutande tankar
AWK är ett kraftfullt> fullfjädrat programmeringsspråk . AWK får sitt namn från initialerna till dess författare - Aho, Weinberger och Kernighan. Awk -kommandot i Linux och andra Unix -system åberopar tolken som kör AWK -skript. Flera implementeringar av awk finns i de senaste systemen som bland annat gawk (GNU awk), mawk (Minimal awk) och nawk (New awk). Kolla in exemplen nedan om du vill behärska awk.
Förstå AWK -program
Program skrivna i awk består av regler, som helt enkelt är ett par mönster och handlingar. Mönstren är grupperade i en tandställning {}, och åtgärdsdelen utlöses när awk hittar texter som matchar mönstret. Även om awk utvecklades för att skriva enliners, kan erfarna användare enkelt skriva komplexa skript med det.
AWK-program är mycket användbara för storskalig filbehandling. Det identifierar textfält med specialtecken och separatorer. Det erbjuder också programmeringskonstruktioner på hög nivå som arrays och loopar. Så att skriva robusta program med vanlig awk är mycket genomförbart.
Praktiska exempel på awk Command i Linux
Administratörer använder normalt awk för datautvinning och rapportering tillsammans med andra typer av filmanipulationer. Nedan har vi diskuterat awk mer detaljerat. Följ kommandona noga och prova dem i din terminal för en fullständig förståelse.
1. Skriv ut specifika fält från textutmatning
Mest mycket använda Linux -kommandon visa sin produktion med olika fält. Normalt använder vi Linux cut -kommandot för att extrahera ett specifikt fält från sådana data. Kommandot nedan visar dig dock hur du gör detta med kommandot awk.
$ who | awk '{print $1}'Detta kommando visar bara det första fältet från utdata från who -kommandot. Så du får helt enkelt användarnamnen för alla loggade användare. Här, $ 1 representerar det första fältet. Du måste använda $ N om du vill extrahera det n: e fältet.
2. Skriv ut flera fält från textutmatning
Awk -tolken gör att vi kan skriva ut hur många fält som helst. Nedanstående exempel visar hur vi extraherar de två första fälten från utdata från who -kommandot.
$ who | awk '{print $1, $2}'Du kan också styra ordningen på utdatafälten. Följande exempel visar först den andra kolumnen som produceras av who -kommandot och sedan den första kolumnen i det andra fältet.
$ who | awk '{print $2, $1}'Lämna bara fältparametrarna ( $ N ) för att visa hela data.
3. Använd BEGIN -uttalanden
BEGIN -satsen tillåter användare att skriva ut viss känd information i utdata. Det används vanligtvis för att formatera utdata som genereras av awk. Syntaxen för detta uttalande visas nedan.
BEGIN { Actions} {ACTION}De åtgärder som bildar BEGIN -sektionen utlöses alltid. Sedan läser awk de återstående raderna en efter en och ser om något behöver göras.
$ who | awk 'BEGIN {print 'User From'} {print $1, $2}'Kommandot ovan kommer att märka de två utmatningsfälten som extraheras från who -kommandot.
4. Använd SLUT -uttalanden
Du kan också använda END -satsen för att se till att vissa åtgärder alltid utförs i slutet av din operation. Placera helt enkelt END -sektionen efter huvuduppsättningen.
$ who | awk 'BEGIN {print 'User From'} {print $1, $2} END {print '--COMPLETED--'}'Kommandot ovan kommer att lägga till den givna strängen i slutet av utdata.
5. Sök med hjälp av mönster
En stor del av awks arbete innebär mönstermatchning och regex. Som vi redan har diskuterat, söker awk efter mönster i varje inmatningsrad och utför bara åtgärden när en matchning utlöses. Våra tidigare regler bestod av endast handlingar. Nedan har vi illustrerat grunderna för mönstermatchning med hjälp av kommandot awk i Linux.
$ who | awk '/mary/ {print}'Detta kommando kommer att se om användaren mary för närvarande är inloggad eller inte. Det kommer att mata ut hela raden om någon matchning hittas.
6. Extrahera information från filer
Kommandot awk fungerar mycket bra med filer och kan användas för komplexa filbehandlingsuppgifter. Följande kommando illustrerar hur awk hanterar filer.
$ awk '/hello/ {print}' /usr/share/dict/american-englishDetta kommando söker efter mönstret 'hej' i den amerikansk-engelska ordlistfilen. Den finns på de flesta Linux-baserade distributioner . Således kan du enkelt prova awk -program på den här filen.
7. Läs AWK -skript från källfilen
Även om det är användbart att skriva enlinjeprogram, kan du också skriva stora program med awk helt. Du vill spara dem och köra ditt program med hjälp av källfilen.
$ awk -f script-file $ awk --file script-fileDe -f eller -fil alternativet låter oss ange programfilen. Du behöver dock inte använda citattecken (‘‘) inuti skriptfilen eftersom Linux-skalet inte tolkar programkoden på detta sätt.
8. Ställ in inmatningsfältet
En fältavskiljare är en avgränsare som delar inmatningsposten. Vi kan enkelt ange fältavskiljare att awk med hjälp av -F eller –Fältavskiljare alternativ. Kolla in kommandona nedan för att se hur detta fungerar.
$ echo 'This-is-a-simple-example' | awk -F - ' {print $1} ' $ echo 'This-is-a-simple-example' | awk --field-separator - ' {print $1} 'Det fungerar på samma sätt när man använder skriptfiler snarare än ett-linjers awk-kommando i Linux.
9. Skriv ut information baserat på skick
Vi har diskuterat kommandot Linux cut i en tidigare guide. Nu visar vi dig hur du extraherar information med hjälp av awk endast när vissa kriterier matchas. Vi kommer att använda samma testfil som vi använde i den guiden. Så gå dit och gör en kopia av test.txt fil.
$ awk '$4 > 50' test.txtDetta kommando kommer att skriva ut alla nationer från filen test.txt, som har mer än 50 miljoner invånare.
10. Skriv ut information genom att jämföra vanliga uttryck
Följande awk -kommando kontrollerar om det tredje fältet på en rad innehåller mönstret 'Lira' och skriver ut hela raden om en matchning hittas. Vi använder igen filen test.txt som används för att illustrera Linux cut -kommando . Så se till att du har den här filen innan du fortsätter.
$ awk '$3 ~ /Lira/' test.txtDu kan välja att bara skriva ut en viss del av en matchning om du vill.
11. Räkna det totala antalet rader i inmatning
Kommandot awk har många specialvariabler som gör att vi enkelt kan göra många avancerade saker. En sådan variabel är NR, som innehåller det aktuella radnumret.
$ awk 'END {print NR} ' test.txtDetta kommando kommer att mata ut hur många rader som finns i vår test.txt -fil. Den upprepas först över varje rad, och när den har nått END kommer den att skriva ut värdet på NR - som innehåller det totala antalet rader i det här fallet.
12. Ställ in utmatningsfältavskiljare
Tidigare har vi visat hur man väljer inmatningsfältavskiljare med -F eller –Fältavskiljare alternativ. Kommandot awk låter oss också ange utmatningsfältavskiljaren. Nedanstående exempel visar detta med hjälp av ett praktiskt exempel.
$ date | awk 'OFS='-' {print$2,$3,$6}'Detta kommando skriver ut det aktuella datumet med formatet dd-mm-åå. Kör datumprogrammet utan awk för att se hur standardutmatningen ser ut.
13. Använda If Construct
Som andra populära programmeringsspråk , awk ger också användare if-else-konstruktionerna. If -satsen i awk har syntaxen nedan.
if (expression) { first_action second_action }Motsvarande åtgärder utförs endast om det villkorliga uttrycket är sant. Nedanstående exempel visar detta med hjälp av vår referensfil test.txt .
$ awk '{ if ($4>100) print }' test.txtDu behöver inte behålla indragningen strikt.
14. Använda If-Else Constructs
Du kan konstruera användbara if-else-stegar med syntaxen nedan. De är användbara vid utformning av komplexa awk -skript som hanterar dynamisk data.
if (expression) first_action else second_action$ awk '{ if ($4>100) print; else print }' test.txtKommandot ovan kommer att skriva ut hela referensfilen eftersom det fjärde fältet inte är större än 100 för varje rad.
15. Ställ in fältbredden
Ibland är inmatningsdatan ganska rörig, och användare kan ha svårt att visualisera dem i sina rapporter. Lyckligtvis ger awk en kraftfull inbyggd variabel som kallas FIELDWIDTHS som gör att vi kan definiera en blankstegsseparerad lista med bredder.
$ echo 5675784464657 | awk 'BEGIN {FIELDWIDTHS= '3 4 5'} {print $1, $2, $3}'Det är mycket användbart vid analys av spridda data eftersom vi kan styra utmatningsfältets bredd exakt som vi vill.
16. Ställ in inspelningsseparatorn
RS eller Record Separator är en annan inbyggd variabel som gör att vi kan ange hur poster separeras. Låt oss först skapa en fil som visar hur denna awk -variabel fungerar.
$ cat new.txt Melinda James 23 New Hampshire (222) 466-1234 Daniel James 99 Phonenix Road (322) 677-3412$ awk 'BEGIN{FS=' '; RS=''} {print $1,$3}' new.txtDetta kommando kommer att analysera dokumentet och spotta ut namn och adress för de två personerna.
17. Utskriftsmiljövariabler
Kommandot awk i Linux gör att vi enkelt kan skriva ut miljövariabler med variabeln ENVIRON. Kommandot nedan visar hur du använder detta för att skriva ut innehållet i PATH -variabeln.
$ awk 'BEGIN{ print ENVIRON['PATH'] }'Du kan skriva ut innehållet i alla miljövariabler genom att ersätta ENVIRON -variabelns argument. Kommandot nedan skriver ut värdet på miljövariabeln HEM.
$ awk 'BEGIN{ print ENVIRON['HOME'] }'18. Utelämna vissa fält från utdata
Kommandot awk tillåter oss att utelämna specifika rader från vår produktion. Följande kommando visar detta med hjälp av vår referensfil test.txt .
$ awk -F':' '{$2=''; print}' test.txtDetta kommando kommer att utelämna den andra kolumnen i vår fil, som innehåller huvudstadsnamnet för varje land. Du kan också utelämna mer än ett fält, som visas i nästa kommando.
$ awk -F':' '{$2='';$3='';print}' test.txt19. Ta bort tomma linjer
Ibland kan data innehålla för många tomma rader. Du kan använda kommandot awk för att ta bort tomma rader ganska enkelt. Kolla in nästa kommando för att se hur det fungerar i praktiken.
$ awk '/^[ ]*$/{next}{print}' new.txtVi har tagit bort alla tomma rader från filen new.txt med ett enkelt reguljärt uttryck och en awk inbyggd kallas nästa.
20. Ta bort släpande blanksteg
Utdata från många Linux -kommandon innehåller efterföljande blanksteg. Vi kan använda kommandot awk i Linux för att ta bort sådana blanksteg som mellanslag och flikar. Kolla in kommandot nedan för att se hur du hanterar sådana problem med hjälp av awk.
$ awk '{sub(/[ ]*$/, '');print}' new.txt test.txtLägg till några efterföljande blanksteg i våra referensfiler och verifiera om awk tog bort dem framgångsrikt eller inte. Det gjorde detta framgångsrikt i min maskin.
21. Kontrollera antalet fält i varje rad
Vi kan enkelt kontrollera hur många fält som finns i en rad med hjälp av en enkel awk one-liner. Det finns många sätt att göra detta, men vi kommer att använda några av awks inbyggda variabler för denna uppgift. NR -variabeln ger oss radnumret och NF -variabeln anger antalet fält.
$ awk '{print NR,'-->',NF}' test.txtNu kan vi bekräfta hur många fält det finns per rad i vårt test.txt dokumentera. Eftersom varje rad i den här filen innehåller fem fält är vi säkra på att kommandot fungerar som förväntat.
22. Verifiera aktuellt filnamn
Awk -variabeln FILENAME används för att verifiera det aktuella inmatningsfilnamnet. Vi visar hur detta fungerar med ett enkelt exempel. Det kan dock vara användbart i situationer där filnamnet inte är känt uttryckligen eller om det finns mer än en inmatningsfil.
$ awk '{print FILENAME}' test.txt $ awk '{print FILENAME}' test.txt new.txtKommandona ovan skriver ut filnamnet awk arbetar på varje gång det behandlar en ny rad med inmatningsfiler.
23. Verifiera antalet bearbetade poster
Följande exempel visar hur vi kan verifiera antalet poster som behandlats av kommandot awk. Eftersom ett stort antal Linux -systemadministratörer använder awk för att generera rapporter är det mycket användbart för dem.
$ awk '{print 'Processing Record - ',NR;} END {print ' Total Records Processed:', NR;}' test.txtJag använder ofta detta awk -snutt för att ha en tydlig översikt över mina handlingar. Du kan enkelt justera den för att rymma nya idéer eller handlingar.
24. Skriv ut det totala antalet tecken i en post
Awk -språket ger en praktisk funktion som kallas length () som berättar hur många tecken som finns i en post. Det är mycket användbart i ett antal scenarier. Ta en snabb titt på följande exempel för att se hur detta fungerar.
$ echo 'A random text string...' | awk '{ print length($0); }'$ awk '{ print length($0); }' /etc/passwdKommandot ovan kommer att skriva ut det totala antalet tecken som finns på varje rad i inmatningssträngen eller filen.
25. Skriv ut alla rader längre än en angiven längd
Vi kan lägga till några villkor för kommandot ovan och göra det bara att skriva ut de rader som är större än en fördefinierad längd. Det är användbart när du redan har en uppfattning om längden på en specifik post.
$ echo 'A random text string...' | awk 'length($0) > 10'$ awk '{ length($0) > 5; }' /etc/passwdDu kan kasta in fler alternativ och/eller argument för att justera kommandot baserat på dina krav.
26. Skriv ut antalet rader, tecken och ord
Följande awk -kommando i Linux skriver ut antalet rader, tecken och ord i en given ingång. Den använder NR -variabeln samt grundläggande aritmetik för att utföra denna operation.
$ echo 'This is a input line...' | awk '{ w += NF; c += length + 1 } END { print NR, w, c }'Det visar att det finns 1 rad, 5 ord och exakt 24 tecken i inmatningssträngen.
27. Beräkna ordfrekvens
Vi kan kombinera associativa matriser och for -loop i awk för att beräkna ordfrekvensen för ett dokument. Följande kommando kan verka lite komplext, men det är ganska enkelt när du väl förstår de grundläggande konstruktionerna.
$ awk 'BEGIN {FS='[^a-zA-Z]+' } { for (i=1; i<=NF; i++) words[tolower($i)]++ } END { for (i in words) print i, words[i] }' test.txtOm du har problem med ett-liner-kodavsnittet, kopiera följande kod till en ny fil och kör den med källan.
$ cat > frequency.awk BEGIN { FS='[^a-zA-Z]+' } { for (i=1; i<=NF; i++) words[tolower($i)]++ } END { for (i in words) print i, words[i] }Kör den sedan med -f alternativ.
$ awk -f frequency.awk test.txt28. Byt namn på filer med AWK
Kommandot awk kan användas för att byta namn på alla filer som matchar vissa kriterier. Följande kommando illustrerar hur du använder awk för att döpa om alla .MP3 -filer i en katalog till .mp3 -filer.
$ touch {a,b,c,d,e}.MP3 $ ls *.MP3 | awk '{ printf('mv '%s' '%s' ', $0, tolower($0)) }' $ ls *.MP3 | awk '{ printf('mv '%s' '%s' ', $0, tolower($0)) }' | shFörst skapade vi några demofiler med .MP3 -tillägg. Det andra kommandot visar användaren vad som händer när bytet är lyckat. Slutligen byter det sista kommandot namnoperationen med mv -kommandot i Linux.
29. Skriv ut ett fyrkantigt rot av ett nummer
AWK erbjuder flera inbyggda funktioner för manipulering av siffror. En av dem är funktionen sqrt (). Det är en C-liknande funktion som returnerar kvadratroten för ett givet tal. Ta en snabb titt på nästa exempel för att se hur det fungerar i allmänhet.
$ awk 'BEGIN{ print sqrt(36); print sqrt(0); print sqrt(-16) }'Eftersom du inte kan bestämma kvadratroten för ett negativt tal, kommer utdata att visa ett speciellt nyckelord som heter 'nan' istället för sqrt (-12).
30. Skriv ut logaritmen för ett tal
Awk -funktionsloggen () ger den naturliga logaritmen för ett tal. Det fungerar dock bara med positiva siffror, så var medveten om att validera användarnas inmatning. Annars kan någon bryta dina awk -program och få opålitlig tillgång till systemresurser.
$ awk 'BEGIN{ print log(36); print log(0); print log(-16) }'Du bör se logaritmen 36 och verifiera att logaritmen 0 är oändligt och loggen med ett negativt värde är 'Not a Number' eller nan.
31. Skriv ut ett tals exponential
Den exponentiella os ett tal n ger värdet av e^n. Det används vanligtvis i awk -skript som handlar om stora siffror eller komplex aritmetisk logik. Vi kan generera exponentialen för ett tal med den inbyggda awk-funktionen exp ().
$ awk 'BEGIN{ print exp(30); print log(0); print exp(-16) }'Awk kan dock inte beräkna exponentiell för extremt stora tal. Du bör göra sådana beräkningar med programmeringsspråk på låg nivå som C och mata värdet till dina awk-skript.
32. Generera slumpmässiga nummer med AWK
Vi kan använda kommandot awk i Linux för att generera slumpmässiga nummer. Dessa nummer kommer att ligga i intervallet 0 till 1, men aldrig 0 eller 1. Du kan multiplicera ett fast värde med det resulterande talet för att få ett större slumpmässigt värde.
$ awk 'BEGIN{ print rand(); print rand()*99 }'Rand () -funktionen behöver inget argument. Dessutom är siffrorna som genereras av denna funktion inte exakt slumpmässiga utan snarare pseudoslumpmässiga. Dessutom är det ganska enkelt att förutsäga dessa siffror från körning till körning. Så du bör inte lita på dem för känsliga beräkningar.
33. Färgkompilatorvarningar i rött
Moderna Linux -kompilatorer kommer att kasta varningar om din kod inte upprätthåller språkstandarder eller har fel som inte stoppar programkörningen. Följande awk -kommando kommer att skriva ut varningsraderna som genereras av en kompilator i rött.
$ gcc -Wall main.c |& awk '/: warning:/{print 'x1B[01;31m' $0 'x1B[m';next;}{print}'Detta kommando är användbart om du vill specificera kompilatorvarningar specifikt. Du kan använda detta kommando med valfri kompilator än gcc, bara se till att ändra mönstret /: varning: / för att återspegla just den kompilatorn.
34. Skriv ut UUID -informationen för filsystemet
UUID eller Universellt unik identifierare är ett nummer som kan användas för att identifiera resurser som Linux -filsystemet . Vi kan helt enkelt skriva ut UUID -informationen i vårt filsystem med hjälp av följande Linux awk -kommando.
$ awk '/UUID/ {print $0}' /etc/fstabDetta kommando söker efter texten UUID i /etc/fstab fil med hjälp av awk -mönster. Det returnerar en kommentar från filen som vi inte är intresserade av. Kommandot nedan ser till att vi bara får de rader som börjar med UUID.
$ awk '/^UUID/ {print $1}' /etc/fstabDet begränsar utmatningen till det första fältet. Så vi får bara UUID -numren.
35. Skriv ut Linux Kernel Image Version
Olika Linux -kärnbilder används av olika Linux -distributioner . Vi kan enkelt skriva ut den exakta kärnbild som vårt system bygger på att använda awk. Kolla in följande kommando för att se hur det fungerar i allmänhet.
$ uname -a | awk '{print $3}'Vi har först utfärdat kommandot uname med -till alternativet och skickade sedan dessa data till awk. Sedan har vi extraherat versionsinformationen för kärnbilden med hjälp av awk.
36. Lägg till radnummer före rader
Användare kan stöta på textfiler som inte innehåller radnummer ganska ofta. Lyckligtvis kan du enkelt lägga till radnummer till en fil med hjälp av kommandot awk i Linux. Ta en närmare titt på exemplet nedan för att se hur detta fungerar i verkliga livet.
$ awk '{ print FNR '. ' $0 ;next}{print}' test.txtKommandot ovan lägger till ett radnummer före var och en av raderna i vår test.txt -referensfil. Den använder den inbyggda awk-variabeln FNR för att hantera detta.
37. Skriv ut en fil efter att innehållet har sorterats
Vi kan också använda awk för att skriva ut en sorterad lista över alla rader. Följande kommandon skriver ut namnet på alla länder i vår test.txt i sorterad ordning.
$ awk -F ':' '{ print $1 }' test.txt | sortNästa kommando kommer att skriva ut inloggningsnamnet för alla användare från /etc/passwd fil.
$ awk -F ':' '{ print $1 }' /etc/passwd | sortDu kan enkelt ändra sorteringsordningen genom att ändra sorteringskommandot.
38. Skriv ut den manuella sidan
Den manuella sidan innehåller detaljerad information om kommandot awk tillsammans med alla tillgängliga alternativ. Det är oerhört viktigt för människor som vill behärska awk -kommandot noggrant.
$ man awkOm du vill lära dig komplexa awk -funktioner kommer det här att vara till stor hjälp för dig. Läs den här dokumentationen när du har problem.
39. Skriv ut hjälpsidan
Hjälpsidan innehåller sammanfattad information om alla möjliga kommandoradsargument. Du kan använda hjälpguiden för awk med ett av följande kommandon.
$ awk -h $ awk --helpSe den här sidan om du vill ha en snabb översikt över alla tillgängliga alternativ för awk.
40. Skriv ut versioninformation
Versionsinformationen ger oss information om hur ett program byggs. Versionssidan för awk innehåller information som dess upphovsrätt, sammanställningsverktyg och så vidare. Du kan visa denna information med ett av följande awk -kommandon.
$ awk -V $ awk --versionAvslutande tankar
Kommandot awk i Linux tillåter oss att göra alla möjliga saker, inklusive filbehandling och systemunderhåll. Det ger ett brett utbud av funktioner för att hantera dagliga datoruppgifter ganska enkelt. Våra redaktörer har sammanställt denna guide med 40 användbara awk -kommandon som kan användas för textmanipulering eller administration. Eftersom AWK är ett fullvärdigt programmeringsspråk i sig, finns det flera sätt att göra samma jobb. Så undra inte varför vi gör vissa saker på ett annat sätt. Du kan alltid kurera dina egna recept baserat på din kompetens och erfarenhet. Lämna oss dina tankar, meddela oss om du har några frågor.
Dela med sig Facebook Twitter Pinterest WhatsApp ReddIt Telegram Viber
- Taggar
- Programmeringsverktyg
- Systemverktyg
7 KOMMENTARER
- Ramesh 24 april 2020 klockan 07:48
Vad är bäst sed eller awk?
Svar
- lauhub 6 januari 2021 Kl. 04:41
Båda är bäst:
- sed är användbart för enkla ersättnings-/utgåva -uppgifter och har vissa begränsningar när det gäller att programmera komplexa uppgifter (även om avancerade användare kan göra många saker)
- awk måste vara mer omfattande för enkla uppgifter men gör det möjligt att använda mer komplexa datastrukturer för mer komplex programmering.
Hur som helst, allt beror på dina behov och kunskap om dessa verktyg
Svar- DC 16 juli 2021 Kl. 09:17
Båda är funktionellt olika. sed är begränsad funktionalitet. Normalt används för inline hitta och ersätt strängredigerare.
Svar
awk används för datamanipulering och ger fler programmeringsfunktioner- Ahmed 16 april 2020 Klockan 13:24
Hej,
Svar
Exemplen är bra men det hade varit bättre om du också hade postat utdata efter exempel.
- Rubaiat Hossain 18 april 2020 Klockan 01:28
Tack, Ahmed för att du följer oss. Vi är dock rädda att att lägga till separata bilder för varje kommando kommer att göra guiden extremt lång och därför kan användare som läser detta från små skärmar som telefoner/surfplattor möta oönskad rullningsupplevelse.
Dessutom uppmuntrar vi våra läsare att tweak dessa awk-kommandon i Linux när du är på språng och prova dem från första hand. På så sätt behärskar du dem snabbare.
Svar- Stefan 6 april 2020 klockan 10:54
Utmärkta exempel. Tack för den här
Svar- Karan Grover 2 april 2020 Klockan 17:29
fina okej exempel
SvarLÄMNA ETT SVAR Avbryt svar
Kommentar: Ange din kommentar! Namn:* Ange ditt namn här E -post:* Du har angett en felaktig e -postadress! Ange din e -postadress här Webbplats:Spara mitt namn, mejl och webbplats i den här webbläsaren för nästa gång jag kommenterar.
Senaste posten
Android10 bästa ansiktsbytesappar för Android och iOS -enhet
Windows OSHur man schemalägger Windows 10 för att tömma papperskorgen automatiskt
AndroidDe 10 bästa faktureringsapparna för Android -enheter för att få betalt snabbt
Windows OSDe 10 bästa GPU -riktmärken för din dator
Måste läsas
LinuxHur man installerar och konfigurerar XAMPP på Ubuntu Linux
LinuxUbuntu Communitheme - Ett nytt Ubuntu Community -tema
LinuxHur man installerar programvara från källkoden i ditt Linux -system
LinuxRedNotebook - En modern och gratis dagbok och journalprogramvara för Linux
Relaterade inlägg
Så här installerar och konfigurerar du Cockpit Web Console på Linux System
Hur man installerar och konfigurerar Yii PHP Framework på Ubuntu Linux
Hur man fixar W: Vissa indexfiler kunde inte ladda ner Fel i Ubuntu Linux
Så här installerar och konfigurerar du 1Password på Linux Desktop
Så här installerar du den senaste GNU Nano -textredigeraren på Linux -skrivbordet
Så här installerar du en ny Relic Infrastructure Agent i Linux -systemet
$ awk '{ print length(Hem A-Z-kommandon 40 Praktiskt och användbart awk -kommando i Linux och BSD FörbiMehedi Hasan IA-Z-kommandonUtvalda 1271 7 ); }' /etc/passwdINNEHÅLL
- Förstå AWK -program
- Praktiska exempel på awk Command i Linux
- 1. Skriv ut specifika fält från textutmatning
- 2. Skriv ut flera fält från textutmatning
- 3. Använd BEGIN -uttalanden
- 4. Använd SLUT -uttalanden
- 5. Sök med hjälp av mönster
- 6. Extrahera information från filer
- 7. Läs AWK -skript från källfilen
- 8. Ställ in inmatningsfältet
- 9. Skriv ut information baserat på skick
- 10. Skriv ut information genom att jämföra vanliga uttryck
- 11. Räkna det totala antalet rader i inmatning
- 12. Ställ in utmatningsfältavskiljare
- 13. Använda If Construct
- 14. Använda If-Else Constructs
- 15. Ställ in fältbredden
- 16. Ställ in inspelningsseparatorn
- 17. Utskriftsmiljövariabler
- 18. Utelämna vissa fält från utdata
- 19. Ta bort tomma linjer
- 20. Ta bort släpande blanksteg
- 21. Kontrollera antalet fält i varje rad
- 22. Verifiera aktuellt filnamn
- 23. Verifiera antalet bearbetade poster
- 24. Skriv ut det totala antalet tecken i en post
- 25. Skriv ut alla rader längre än en angiven längd
- 26. Skriv ut antalet rader, tecken och ord
- 27. Beräkna ordfrekvens
- 28. Byt namn på filer med AWK
- 29. Skriv ut ett fyrkantigt rot av ett nummer
- 30. Skriv ut logaritmen för ett tal
- 31. Skriv ut ett tals exponential
- 32. Generera slumpmässiga nummer med AWK
- 33. Färgkompilatorvarningar i rött
- 34. Skriv ut UUID -informationen för filsystemet
- 35. Skriv ut Linux Kernel Image Version
- 36. Lägg till radnummer före rader
- 37. Skriv ut en fil efter att innehållet har sorterats
- 38. Skriv ut den manuella sidan
- 39. Skriv ut hjälpsidan
- 40. Skriv ut versioninformation
- Avslutande tankar
AWK är ett kraftfullt> fullfjädrat programmeringsspråk . AWK får sitt namn från initialerna till dess författare - Aho, Weinberger och Kernighan. Awk -kommandot i Linux och andra Unix -system åberopar tolken som kör AWK -skript. Flera implementeringar av awk finns i de senaste systemen som bland annat gawk (GNU awk), mawk (Minimal awk) och nawk (New awk). Kolla in exemplen nedan om du vill behärska awk.
Förstå AWK -program
Program skrivna i awk består av regler, som helt enkelt är ett par mönster och handlingar. Mönstren är grupperade i en tandställning {}, och åtgärdsdelen utlöses när awk hittar texter som matchar mönstret. Även om awk utvecklades för att skriva enliners, kan erfarna användare enkelt skriva komplexa skript med det.
AWK-program är mycket användbara för storskalig filbehandling. Det identifierar textfält med specialtecken och separatorer. Det erbjuder också programmeringskonstruktioner på hög nivå som arrays och loopar. Så att skriva robusta program med vanlig awk är mycket genomförbart.
Praktiska exempel på awk Command i Linux
Administratörer använder normalt awk för datautvinning och rapportering tillsammans med andra typer av filmanipulationer. Nedan har vi diskuterat awk mer detaljerat. Följ kommandona noga och prova dem i din terminal för en fullständig förståelse.
1. Skriv ut specifika fält från textutmatning
Mest mycket använda Linux -kommandon visa sin produktion med olika fält. Normalt använder vi Linux cut -kommandot för att extrahera ett specifikt fält från sådana data. Kommandot nedan visar dig dock hur du gör detta med kommandot awk.
$ who | awk '{print $1}'Detta kommando visar bara det första fältet från utdata från who -kommandot. Så du får helt enkelt användarnamnen för alla loggade användare. Här, $ 1 representerar det första fältet. Du måste använda $ N om du vill extrahera det n: e fältet.
2. Skriv ut flera fält från textutmatning
Awk -tolken gör att vi kan skriva ut hur många fält som helst. Nedanstående exempel visar hur vi extraherar de två första fälten från utdata från who -kommandot.
$ who | awk '{print $1, $2}'Du kan också styra ordningen på utdatafälten. Följande exempel visar först den andra kolumnen som produceras av who -kommandot och sedan den första kolumnen i det andra fältet.
$ who | awk '{print $2, $1}'Lämna bara fältparametrarna ( $ N ) för att visa hela data.
3. Använd BEGIN -uttalanden
BEGIN -satsen tillåter användare att skriva ut viss känd information i utdata. Det används vanligtvis för att formatera utdata som genereras av awk. Syntaxen för detta uttalande visas nedan.
BEGIN { Actions} {ACTION}De åtgärder som bildar BEGIN -sektionen utlöses alltid. Sedan läser awk de återstående raderna en efter en och ser om något behöver göras.
$ who | awk 'BEGIN {print 'User From'} {print $1, $2}'Kommandot ovan kommer att märka de två utmatningsfälten som extraheras från who -kommandot.
4. Använd SLUT -uttalanden
Du kan också använda END -satsen för att se till att vissa åtgärder alltid utförs i slutet av din operation. Placera helt enkelt END -sektionen efter huvuduppsättningen.
$ who | awk 'BEGIN {print 'User From'} {print $1, $2} END {print '--COMPLETED--'}'Kommandot ovan kommer att lägga till den givna strängen i slutet av utdata.
5. Sök med hjälp av mönster
En stor del av awks arbete innebär mönstermatchning och regex. Som vi redan har diskuterat, söker awk efter mönster i varje inmatningsrad och utför bara åtgärden när en matchning utlöses. Våra tidigare regler bestod av endast handlingar. Nedan har vi illustrerat grunderna för mönstermatchning med hjälp av kommandot awk i Linux.
$ who | awk '/mary/ {print}'Detta kommando kommer att se om användaren mary för närvarande är inloggad eller inte. Det kommer att mata ut hela raden om någon matchning hittas.
6. Extrahera information från filer
Kommandot awk fungerar mycket bra med filer och kan användas för komplexa filbehandlingsuppgifter. Följande kommando illustrerar hur awk hanterar filer.
$ awk '/hello/ {print}' /usr/share/dict/american-englishDetta kommando söker efter mönstret 'hej' i den amerikansk-engelska ordlistfilen. Den finns på de flesta Linux-baserade distributioner . Således kan du enkelt prova awk -program på den här filen.
7. Läs AWK -skript från källfilen
Även om det är användbart att skriva enlinjeprogram, kan du också skriva stora program med awk helt. Du vill spara dem och köra ditt program med hjälp av källfilen.
$ awk -f script-file $ awk --file script-fileDe -f eller -fil alternativet låter oss ange programfilen. Du behöver dock inte använda citattecken (‘‘) inuti skriptfilen eftersom Linux-skalet inte tolkar programkoden på detta sätt.
8. Ställ in inmatningsfältet
En fältavskiljare är en avgränsare som delar inmatningsposten. Vi kan enkelt ange fältavskiljare att awk med hjälp av -F eller –Fältavskiljare alternativ. Kolla in kommandona nedan för att se hur detta fungerar.
$ echo 'This-is-a-simple-example' | awk -F - ' {print $1} ' $ echo 'This-is-a-simple-example' | awk --field-separator - ' {print $1} 'Det fungerar på samma sätt när man använder skriptfiler snarare än ett-linjers awk-kommando i Linux.
9. Skriv ut information baserat på skick
Vi har diskuterat kommandot Linux cut i en tidigare guide. Nu visar vi dig hur du extraherar information med hjälp av awk endast när vissa kriterier matchas. Vi kommer att använda samma testfil som vi använde i den guiden. Så gå dit och gör en kopia av test.txt fil.
$ awk '$4 > 50' test.txtDetta kommando kommer att skriva ut alla nationer från filen test.txt, som har mer än 50 miljoner invånare.
10. Skriv ut information genom att jämföra vanliga uttryck
Följande awk -kommando kontrollerar om det tredje fältet på en rad innehåller mönstret 'Lira' och skriver ut hela raden om en matchning hittas. Vi använder igen filen test.txt som används för att illustrera Linux cut -kommando . Så se till att du har den här filen innan du fortsätter.
$ awk '$3 ~ /Lira/' test.txtDu kan välja att bara skriva ut en viss del av en matchning om du vill.
11. Räkna det totala antalet rader i inmatning
Kommandot awk har många specialvariabler som gör att vi enkelt kan göra många avancerade saker. En sådan variabel är NR, som innehåller det aktuella radnumret.
$ awk 'END {print NR} ' test.txtDetta kommando kommer att mata ut hur många rader som finns i vår test.txt -fil. Den upprepas först över varje rad, och när den har nått END kommer den att skriva ut värdet på NR - som innehåller det totala antalet rader i det här fallet.
12. Ställ in utmatningsfältavskiljare
Tidigare har vi visat hur man väljer inmatningsfältavskiljare med -F eller –Fältavskiljare alternativ. Kommandot awk låter oss också ange utmatningsfältavskiljaren. Nedanstående exempel visar detta med hjälp av ett praktiskt exempel.
$ date | awk 'OFS='-' {print$2,$3,$6}'Detta kommando skriver ut det aktuella datumet med formatet dd-mm-åå. Kör datumprogrammet utan awk för att se hur standardutmatningen ser ut.
13. Använda If Construct
Som andra populära programmeringsspråk , awk ger också användare if-else-konstruktionerna. If -satsen i awk har syntaxen nedan.
if (expression) { first_action second_action }Motsvarande åtgärder utförs endast om det villkorliga uttrycket är sant. Nedanstående exempel visar detta med hjälp av vår referensfil test.txt .
$ awk '{ if ($4>100) print }' test.txtDu behöver inte behålla indragningen strikt.
14. Använda If-Else Constructs
Du kan konstruera användbara if-else-stegar med syntaxen nedan. De är användbara vid utformning av komplexa awk -skript som hanterar dynamisk data.
if (expression) first_action else second_action$ awk '{ if ($4>100) print; else print }' test.txtKommandot ovan kommer att skriva ut hela referensfilen eftersom det fjärde fältet inte är större än 100 för varje rad.
15. Ställ in fältbredden
Ibland är inmatningsdatan ganska rörig, och användare kan ha svårt att visualisera dem i sina rapporter. Lyckligtvis ger awk en kraftfull inbyggd variabel som kallas FIELDWIDTHS som gör att vi kan definiera en blankstegsseparerad lista med bredder.
$ echo 5675784464657 | awk 'BEGIN {FIELDWIDTHS= '3 4 5'} {print $1, $2, $3}'Det är mycket användbart vid analys av spridda data eftersom vi kan styra utmatningsfältets bredd exakt som vi vill.
16. Ställ in inspelningsseparatorn
RS eller Record Separator är en annan inbyggd variabel som gör att vi kan ange hur poster separeras. Låt oss först skapa en fil som visar hur denna awk -variabel fungerar.
$ cat new.txt Melinda James 23 New Hampshire (222) 466-1234 Daniel James 99 Phonenix Road (322) 677-3412$ awk 'BEGIN{FS=' '; RS=''} {print $1,$3}' new.txtDetta kommando kommer att analysera dokumentet och spotta ut namn och adress för de två personerna.
17. Utskriftsmiljövariabler
Kommandot awk i Linux gör att vi enkelt kan skriva ut miljövariabler med variabeln ENVIRON. Kommandot nedan visar hur du använder detta för att skriva ut innehållet i PATH -variabeln.
$ awk 'BEGIN{ print ENVIRON['PATH'] }'Du kan skriva ut innehållet i alla miljövariabler genom att ersätta ENVIRON -variabelns argument. Kommandot nedan skriver ut värdet på miljövariabeln HEM.
$ awk 'BEGIN{ print ENVIRON['HOME'] }'18. Utelämna vissa fält från utdata
Kommandot awk tillåter oss att utelämna specifika rader från vår produktion. Följande kommando visar detta med hjälp av vår referensfil test.txt .
$ awk -F':' '{$2=''; print}' test.txtDetta kommando kommer att utelämna den andra kolumnen i vår fil, som innehåller huvudstadsnamnet för varje land. Du kan också utelämna mer än ett fält, som visas i nästa kommando.
$ awk -F':' '{$2='';$3='';print}' test.txt19. Ta bort tomma linjer
Ibland kan data innehålla för många tomma rader. Du kan använda kommandot awk för att ta bort tomma rader ganska enkelt. Kolla in nästa kommando för att se hur det fungerar i praktiken.
$ awk '/^[ ]*$/{next}{print}' new.txtVi har tagit bort alla tomma rader från filen new.txt med ett enkelt reguljärt uttryck och en awk inbyggd kallas nästa.
20. Ta bort släpande blanksteg
Utdata från många Linux -kommandon innehåller efterföljande blanksteg. Vi kan använda kommandot awk i Linux för att ta bort sådana blanksteg som mellanslag och flikar. Kolla in kommandot nedan för att se hur du hanterar sådana problem med hjälp av awk.
$ awk '{sub(/[ ]*$/, '');print}' new.txt test.txtLägg till några efterföljande blanksteg i våra referensfiler och verifiera om awk tog bort dem framgångsrikt eller inte. Det gjorde detta framgångsrikt i min maskin.
21. Kontrollera antalet fält i varje rad
Vi kan enkelt kontrollera hur många fält som finns i en rad med hjälp av en enkel awk one-liner. Det finns många sätt att göra detta, men vi kommer att använda några av awks inbyggda variabler för denna uppgift. NR -variabeln ger oss radnumret och NF -variabeln anger antalet fält.
$ awk '{print NR,'-->',NF}' test.txtNu kan vi bekräfta hur många fält det finns per rad i vårt test.txt dokumentera. Eftersom varje rad i den här filen innehåller fem fält är vi säkra på att kommandot fungerar som förväntat.
22. Verifiera aktuellt filnamn
Awk -variabeln FILENAME används för att verifiera det aktuella inmatningsfilnamnet. Vi visar hur detta fungerar med ett enkelt exempel. Det kan dock vara användbart i situationer där filnamnet inte är känt uttryckligen eller om det finns mer än en inmatningsfil.
$ awk '{print FILENAME}' test.txt $ awk '{print FILENAME}' test.txt new.txtKommandona ovan skriver ut filnamnet awk arbetar på varje gång det behandlar en ny rad med inmatningsfiler.
23. Verifiera antalet bearbetade poster
Följande exempel visar hur vi kan verifiera antalet poster som behandlats av kommandot awk. Eftersom ett stort antal Linux -systemadministratörer använder awk för att generera rapporter är det mycket användbart för dem.
$ awk '{print 'Processing Record - ',NR;} END {print ' Total Records Processed:', NR;}' test.txtJag använder ofta detta awk -snutt för att ha en tydlig översikt över mina handlingar. Du kan enkelt justera den för att rymma nya idéer eller handlingar.
24. Skriv ut det totala antalet tecken i en post
Awk -språket ger en praktisk funktion som kallas length () som berättar hur många tecken som finns i en post. Det är mycket användbart i ett antal scenarier. Ta en snabb titt på följande exempel för att se hur detta fungerar.
$ echo 'A random text string...' | awk '{ print length($0); }'$ awk '{ print length($0); }' /etc/passwdKommandot ovan kommer att skriva ut det totala antalet tecken som finns på varje rad i inmatningssträngen eller filen.
25. Skriv ut alla rader längre än en angiven längd
Vi kan lägga till några villkor för kommandot ovan och göra det bara att skriva ut de rader som är större än en fördefinierad längd. Det är användbart när du redan har en uppfattning om längden på en specifik post.
$ echo 'A random text string...' | awk 'length($0) > 10'$ awk '{ length($0) > 5; }' /etc/passwdDu kan kasta in fler alternativ och/eller argument för att justera kommandot baserat på dina krav.
26. Skriv ut antalet rader, tecken och ord
Följande awk -kommando i Linux skriver ut antalet rader, tecken och ord i en given ingång. Den använder NR -variabeln samt grundläggande aritmetik för att utföra denna operation.
$ echo 'This is a input line...' | awk '{ w += NF; c += length + 1 } END { print NR, w, c }'Det visar att det finns 1 rad, 5 ord och exakt 24 tecken i inmatningssträngen.
27. Beräkna ordfrekvens
Vi kan kombinera associativa matriser och for -loop i awk för att beräkna ordfrekvensen för ett dokument. Följande kommando kan verka lite komplext, men det är ganska enkelt när du väl förstår de grundläggande konstruktionerna.
$ awk 'BEGIN {FS='[^a-zA-Z]+' } { for (i=1; i<=NF; i++) words[tolower($i)]++ } END { for (i in words) print i, words[i] }' test.txtOm du har problem med ett-liner-kodavsnittet, kopiera följande kod till en ny fil och kör den med källan.
$ cat > frequency.awk BEGIN { FS='[^a-zA-Z]+' } { for (i=1; i<=NF; i++) words[tolower($i)]++ } END { for (i in words) print i, words[i] }Kör den sedan med -f alternativ.
$ awk -f frequency.awk test.txt28. Byt namn på filer med AWK
Kommandot awk kan användas för att byta namn på alla filer som matchar vissa kriterier. Följande kommando illustrerar hur du använder awk för att döpa om alla .MP3 -filer i en katalog till .mp3 -filer.
$ touch {a,b,c,d,e}.MP3 $ ls *.MP3 | awk '{ printf('mv '%s' '%s' ', $0, tolower($0)) }' $ ls *.MP3 | awk '{ printf('mv '%s' '%s' ', $0, tolower($0)) }' | shFörst skapade vi några demofiler med .MP3 -tillägg. Det andra kommandot visar användaren vad som händer när bytet är lyckat. Slutligen byter det sista kommandot namnoperationen med mv -kommandot i Linux.
29. Skriv ut ett fyrkantigt rot av ett nummer
AWK erbjuder flera inbyggda funktioner för manipulering av siffror. En av dem är funktionen sqrt (). Det är en C-liknande funktion som returnerar kvadratroten för ett givet tal. Ta en snabb titt på nästa exempel för att se hur det fungerar i allmänhet.
$ awk 'BEGIN{ print sqrt(36); print sqrt(0); print sqrt(-16) }'Eftersom du inte kan bestämma kvadratroten för ett negativt tal, kommer utdata att visa ett speciellt nyckelord som heter 'nan' istället för sqrt (-12).
30. Skriv ut logaritmen för ett tal
Awk -funktionsloggen () ger den naturliga logaritmen för ett tal. Det fungerar dock bara med positiva siffror, så var medveten om att validera användarnas inmatning. Annars kan någon bryta dina awk -program och få opålitlig tillgång till systemresurser.
$ awk 'BEGIN{ print log(36); print log(0); print log(-16) }'Du bör se logaritmen 36 och verifiera att logaritmen 0 är oändligt och loggen med ett negativt värde är 'Not a Number' eller nan.
31. Skriv ut ett tals exponential
Den exponentiella os ett tal n ger värdet av e^n. Det används vanligtvis i awk -skript som handlar om stora siffror eller komplex aritmetisk logik. Vi kan generera exponentialen för ett tal med den inbyggda awk-funktionen exp ().
$ awk 'BEGIN{ print exp(30); print log(0); print exp(-16) }'Awk kan dock inte beräkna exponentiell för extremt stora tal. Du bör göra sådana beräkningar med programmeringsspråk på låg nivå som C och mata värdet till dina awk-skript.
32. Generera slumpmässiga nummer med AWK
Vi kan använda kommandot awk i Linux för att generera slumpmässiga nummer. Dessa nummer kommer att ligga i intervallet 0 till 1, men aldrig 0 eller 1. Du kan multiplicera ett fast värde med det resulterande talet för att få ett större slumpmässigt värde.
$ awk 'BEGIN{ print rand(); print rand()*99 }'Rand () -funktionen behöver inget argument. Dessutom är siffrorna som genereras av denna funktion inte exakt slumpmässiga utan snarare pseudoslumpmässiga. Dessutom är det ganska enkelt att förutsäga dessa siffror från körning till körning. Så du bör inte lita på dem för känsliga beräkningar.
33. Färgkompilatorvarningar i rött
Moderna Linux -kompilatorer kommer att kasta varningar om din kod inte upprätthåller språkstandarder eller har fel som inte stoppar programkörningen. Följande awk -kommando kommer att skriva ut varningsraderna som genereras av en kompilator i rött.
$ gcc -Wall main.c |& awk '/: warning:/{print 'x1B[01;31m' $0 'x1B[m';next;}{print}'Detta kommando är användbart om du vill specificera kompilatorvarningar specifikt. Du kan använda detta kommando med valfri kompilator än gcc, bara se till att ändra mönstret /: varning: / för att återspegla just den kompilatorn.
34. Skriv ut UUID -informationen för filsystemet
UUID eller Universellt unik identifierare är ett nummer som kan användas för att identifiera resurser som Linux -filsystemet . Vi kan helt enkelt skriva ut UUID -informationen i vårt filsystem med hjälp av följande Linux awk -kommando.
$ awk '/UUID/ {print $0}' /etc/fstabDetta kommando söker efter texten UUID i /etc/fstab fil med hjälp av awk -mönster. Det returnerar en kommentar från filen som vi inte är intresserade av. Kommandot nedan ser till att vi bara får de rader som börjar med UUID.
$ awk '/^UUID/ {print $1}' /etc/fstabDet begränsar utmatningen till det första fältet. Så vi får bara UUID -numren.
35. Skriv ut Linux Kernel Image Version
Olika Linux -kärnbilder används av olika Linux -distributioner . Vi kan enkelt skriva ut den exakta kärnbild som vårt system bygger på att använda awk. Kolla in följande kommando för att se hur det fungerar i allmänhet.
$ uname -a | awk '{print $3}'Vi har först utfärdat kommandot uname med -till alternativet och skickade sedan dessa data till awk. Sedan har vi extraherat versionsinformationen för kärnbilden med hjälp av awk.
36. Lägg till radnummer före rader
Användare kan stöta på textfiler som inte innehåller radnummer ganska ofta. Lyckligtvis kan du enkelt lägga till radnummer till en fil med hjälp av kommandot awk i Linux. Ta en närmare titt på exemplet nedan för att se hur detta fungerar i verkliga livet.
$ awk '{ print FNR '. ' $0 ;next}{print}' test.txtKommandot ovan lägger till ett radnummer före var och en av raderna i vår test.txt -referensfil. Den använder den inbyggda awk-variabeln FNR för att hantera detta.
37. Skriv ut en fil efter att innehållet har sorterats
Vi kan också använda awk för att skriva ut en sorterad lista över alla rader. Följande kommandon skriver ut namnet på alla länder i vår test.txt i sorterad ordning.
$ awk -F ':' '{ print $1 }' test.txt | sortNästa kommando kommer att skriva ut inloggningsnamnet för alla användare från /etc/passwd fil.
$ awk -F ':' '{ print $1 }' /etc/passwd | sortDu kan enkelt ändra sorteringsordningen genom att ändra sorteringskommandot.
38. Skriv ut den manuella sidan
Den manuella sidan innehåller detaljerad information om kommandot awk tillsammans med alla tillgängliga alternativ. Det är oerhört viktigt för människor som vill behärska awk -kommandot noggrant.
$ man awkOm du vill lära dig komplexa awk -funktioner kommer det här att vara till stor hjälp för dig. Läs den här dokumentationen när du har problem.
39. Skriv ut hjälpsidan
Hjälpsidan innehåller sammanfattad information om alla möjliga kommandoradsargument. Du kan använda hjälpguiden för awk med ett av följande kommandon.
$ awk -h $ awk --helpSe den här sidan om du vill ha en snabb översikt över alla tillgängliga alternativ för awk.
40. Skriv ut versioninformation
Versionsinformationen ger oss information om hur ett program byggs. Versionssidan för awk innehåller information som dess upphovsrätt, sammanställningsverktyg och så vidare. Du kan visa denna information med ett av följande awk -kommandon.
$ awk -V $ awk --versionAvslutande tankar
Kommandot awk i Linux tillåter oss att göra alla möjliga saker, inklusive filbehandling och systemunderhåll. Det ger ett brett utbud av funktioner för att hantera dagliga datoruppgifter ganska enkelt. Våra redaktörer har sammanställt denna guide med 40 användbara awk -kommandon som kan användas för textmanipulering eller administration. Eftersom AWK är ett fullvärdigt programmeringsspråk i sig, finns det flera sätt att göra samma jobb. Så undra inte varför vi gör vissa saker på ett annat sätt. Du kan alltid kurera dina egna recept baserat på din kompetens och erfarenhet. Lämna oss dina tankar, meddela oss om du har några frågor.
Dela med sig Facebook Twitter Pinterest WhatsApp ReddIt Telegram Viber
- Taggar
- Programmeringsverktyg
- Systemverktyg
7 KOMMENTARER
- Ramesh 24 april 2020 klockan 07:48
Vad är bäst sed eller awk?
Svar
- lauhub 6 januari 2021 Kl. 04:41
Båda är bäst:
- sed är användbart för enkla ersättnings-/utgåva -uppgifter och har vissa begränsningar när det gäller att programmera komplexa uppgifter (även om avancerade användare kan göra många saker)
- awk måste vara mer omfattande för enkla uppgifter men gör det möjligt att använda mer komplexa datastrukturer för mer komplex programmering.
Hur som helst, allt beror på dina behov och kunskap om dessa verktyg
Svar- DC 16 juli 2021 Kl. 09:17
Båda är funktionellt olika. sed är begränsad funktionalitet. Normalt används för inline hitta och ersätt strängredigerare.
Svar
awk används för datamanipulering och ger fler programmeringsfunktioner- Ahmed 16 april 2020 Klockan 13:24
Hej,
Svar
Exemplen är bra men det hade varit bättre om du också hade postat utdata efter exempel.
- Rubaiat Hossain 18 april 2020 Klockan 01:28
Tack, Ahmed för att du följer oss. Vi är dock rädda att att lägga till separata bilder för varje kommando kommer att göra guiden extremt lång och därför kan användare som läser detta från små skärmar som telefoner/surfplattor möta oönskad rullningsupplevelse.
Dessutom uppmuntrar vi våra läsare att tweak dessa awk-kommandon i Linux när du är på språng och prova dem från första hand. På så sätt behärskar du dem snabbare.
Svar- Stefan 6 april 2020 klockan 10:54
Utmärkta exempel. Tack för den här
Svar- Karan Grover 2 april 2020 Klockan 17:29
fina okej exempel
SvarLÄMNA ETT SVAR Avbryt svar
Kommentar: Ange din kommentar! Namn:* Ange ditt namn här E -post:* Du har angett en felaktig e -postadress! Ange din e -postadress här Webbplats:Spara mitt namn, mejl och webbplats i den här webbläsaren för nästa gång jag kommenterar.
Senaste posten
Android10 bästa ansiktsbytesappar för Android och iOS -enhet
Windows OSHur man schemalägger Windows 10 för att tömma papperskorgen automatiskt
AndroidDe 10 bästa faktureringsapparna för Android -enheter för att få betalt snabbt
Windows OSDe 10 bästa GPU -riktmärken för din dator
Måste läsas
LinuxHur man installerar och konfigurerar XAMPP på Ubuntu Linux
LinuxUbuntu Communitheme - Ett nytt Ubuntu Community -tema
LinuxHur man installerar programvara från källkoden i ditt Linux -system
LinuxRedNotebook - En modern och gratis dagbok och journalprogramvara för Linux
Relaterade inlägg
Så här installerar och konfigurerar du Cockpit Web Console på Linux System
Hur man installerar och konfigurerar Yii PHP Framework på Ubuntu Linux
Hur man fixar W: Vissa indexfiler kunde inte ladda ner Fel i Ubuntu Linux
Så här installerar och konfigurerar du 1Password på Linux Desktop
Så här installerar du den senaste GNU Nano -textredigeraren på Linux -skrivbordet
Så här installerar du en ny Relic Infrastructure Agent i Linux -systemet
Kommandot ovan kommer att skriva ut det totala antalet tecken som finns på varje rad i inmatningssträngen eller filen.
25. Skriv ut alla rader längre än en angiven längd
Vi kan lägga till några villkor för kommandot ovan och göra det bara att skriva ut de rader som är större än en fördefinierad längd. Det är användbart när du redan har en uppfattning om längden på en specifik post.
$ echo 'A random text string...' | awk 'length(Hem A-Z-kommandon 40 Praktiskt och användbart awk -kommando i Linux och BSD FörbiMehedi Hasan IA-Z-kommandonUtvalda 1271 7 ) > 10'INNEHÅLL
- Förstå AWK -program
- Praktiska exempel på awk Command i Linux
- 1. Skriv ut specifika fält från textutmatning
- 2. Skriv ut flera fält från textutmatning
- 3. Använd BEGIN -uttalanden
- 4. Använd SLUT -uttalanden
- 5. Sök med hjälp av mönster
- 6. Extrahera information från filer
- 7. Läs AWK -skript från källfilen
- 8. Ställ in inmatningsfältet
- 9. Skriv ut information baserat på skick
- 10. Skriv ut information genom att jämföra vanliga uttryck
- 11. Räkna det totala antalet rader i inmatning
- 12. Ställ in utmatningsfältavskiljare
- 13. Använda If Construct
- 14. Använda If-Else Constructs
- 15. Ställ in fältbredden
- 16. Ställ in inspelningsseparatorn
- 17. Utskriftsmiljövariabler
- 18. Utelämna vissa fält från utdata
- 19. Ta bort tomma linjer
- 20. Ta bort släpande blanksteg
- 21. Kontrollera antalet fält i varje rad
- 22. Verifiera aktuellt filnamn
- 23. Verifiera antalet bearbetade poster
- 24. Skriv ut det totala antalet tecken i en post
- 25. Skriv ut alla rader längre än en angiven längd
- 26. Skriv ut antalet rader, tecken och ord
- 27. Beräkna ordfrekvens
- 28. Byt namn på filer med AWK
- 29. Skriv ut ett fyrkantigt rot av ett nummer
- 30. Skriv ut logaritmen för ett tal
- 31. Skriv ut ett tals exponential
- 32. Generera slumpmässiga nummer med AWK
- 33. Färgkompilatorvarningar i rött
- 34. Skriv ut UUID -informationen för filsystemet
- 35. Skriv ut Linux Kernel Image Version
- 36. Lägg till radnummer före rader
- 37. Skriv ut en fil efter att innehållet har sorterats
- 38. Skriv ut den manuella sidan
- 39. Skriv ut hjälpsidan
- 40. Skriv ut versioninformation
- Avslutande tankar
AWK är ett kraftfullt> fullfjädrat programmeringsspråk . AWK får sitt namn från initialerna till dess författare - Aho, Weinberger och Kernighan. Awk -kommandot i Linux och andra Unix -system åberopar tolken som kör AWK -skript. Flera implementeringar av awk finns i de senaste systemen som bland annat gawk (GNU awk), mawk (Minimal awk) och nawk (New awk). Kolla in exemplen nedan om du vill behärska awk.
Förstå AWK -program
Program skrivna i awk består av regler, som helt enkelt är ett par mönster och handlingar. Mönstren är grupperade i en tandställning {}, och åtgärdsdelen utlöses när awk hittar texter som matchar mönstret. Även om awk utvecklades för att skriva enliners, kan erfarna användare enkelt skriva komplexa skript med det.
AWK-program är mycket användbara för storskalig filbehandling. Det identifierar textfält med specialtecken och separatorer. Det erbjuder också programmeringskonstruktioner på hög nivå som arrays och loopar. Så att skriva robusta program med vanlig awk är mycket genomförbart.
Praktiska exempel på awk Command i Linux
Administratörer använder normalt awk för datautvinning och rapportering tillsammans med andra typer av filmanipulationer. Nedan har vi diskuterat awk mer detaljerat. Följ kommandona noga och prova dem i din terminal för en fullständig förståelse.
1. Skriv ut specifika fält från textutmatning
Mest mycket använda Linux -kommandon visa sin produktion med olika fält. Normalt använder vi Linux cut -kommandot för att extrahera ett specifikt fält från sådana data. Kommandot nedan visar dig dock hur du gör detta med kommandot awk.
$ who | awk '{print $1}'Detta kommando visar bara det första fältet från utdata från who -kommandot. Så du får helt enkelt användarnamnen för alla loggade användare. Här, $ 1 representerar det första fältet. Du måste använda $ N om du vill extrahera det n: e fältet.
2. Skriv ut flera fält från textutmatning
Awk -tolken gör att vi kan skriva ut hur många fält som helst. Nedanstående exempel visar hur vi extraherar de två första fälten från utdata från who -kommandot.
$ who | awk '{print $1, $2}'Du kan också styra ordningen på utdatafälten. Följande exempel visar först den andra kolumnen som produceras av who -kommandot och sedan den första kolumnen i det andra fältet.
$ who | awk '{print $2, $1}'Lämna bara fältparametrarna ( $ N ) för att visa hela data.
3. Använd BEGIN -uttalanden
BEGIN -satsen tillåter användare att skriva ut viss känd information i utdata. Det används vanligtvis för att formatera utdata som genereras av awk. Syntaxen för detta uttalande visas nedan.
BEGIN { Actions} {ACTION}De åtgärder som bildar BEGIN -sektionen utlöses alltid. Sedan läser awk de återstående raderna en efter en och ser om något behöver göras.
$ who | awk 'BEGIN {print 'User From'} {print $1, $2}'Kommandot ovan kommer att märka de två utmatningsfälten som extraheras från who -kommandot.
4. Använd SLUT -uttalanden
Du kan också använda END -satsen för att se till att vissa åtgärder alltid utförs i slutet av din operation. Placera helt enkelt END -sektionen efter huvuduppsättningen.
$ who | awk 'BEGIN {print 'User From'} {print $1, $2} END {print '--COMPLETED--'}'Kommandot ovan kommer att lägga till den givna strängen i slutet av utdata.
5. Sök med hjälp av mönster
En stor del av awks arbete innebär mönstermatchning och regex. Som vi redan har diskuterat, söker awk efter mönster i varje inmatningsrad och utför bara åtgärden när en matchning utlöses. Våra tidigare regler bestod av endast handlingar. Nedan har vi illustrerat grunderna för mönstermatchning med hjälp av kommandot awk i Linux.
$ who | awk '/mary/ {print}'Detta kommando kommer att se om användaren mary för närvarande är inloggad eller inte. Det kommer att mata ut hela raden om någon matchning hittas.
6. Extrahera information från filer
Kommandot awk fungerar mycket bra med filer och kan användas för komplexa filbehandlingsuppgifter. Följande kommando illustrerar hur awk hanterar filer.
$ awk '/hello/ {print}' /usr/share/dict/american-englishDetta kommando söker efter mönstret 'hej' i den amerikansk-engelska ordlistfilen. Den finns på de flesta Linux-baserade distributioner . Således kan du enkelt prova awk -program på den här filen.
7. Läs AWK -skript från källfilen
Även om det är användbart att skriva enlinjeprogram, kan du också skriva stora program med awk helt. Du vill spara dem och köra ditt program med hjälp av källfilen.
$ awk -f script-file $ awk --file script-fileDe -f eller -fil alternativet låter oss ange programfilen. Du behöver dock inte använda citattecken (‘‘) inuti skriptfilen eftersom Linux-skalet inte tolkar programkoden på detta sätt.
8. Ställ in inmatningsfältet
En fältavskiljare är en avgränsare som delar inmatningsposten. Vi kan enkelt ange fältavskiljare att awk med hjälp av -F eller –Fältavskiljare alternativ. Kolla in kommandona nedan för att se hur detta fungerar.
$ echo 'This-is-a-simple-example' | awk -F - ' {print $1} ' $ echo 'This-is-a-simple-example' | awk --field-separator - ' {print $1} 'Det fungerar på samma sätt när man använder skriptfiler snarare än ett-linjers awk-kommando i Linux.
9. Skriv ut information baserat på skick
Vi har diskuterat kommandot Linux cut i en tidigare guide. Nu visar vi dig hur du extraherar information med hjälp av awk endast när vissa kriterier matchas. Vi kommer att använda samma testfil som vi använde i den guiden. Så gå dit och gör en kopia av test.txt fil.
$ awk '$4 > 50' test.txtDetta kommando kommer att skriva ut alla nationer från filen test.txt, som har mer än 50 miljoner invånare.
10. Skriv ut information genom att jämföra vanliga uttryck
Följande awk -kommando kontrollerar om det tredje fältet på en rad innehåller mönstret 'Lira' och skriver ut hela raden om en matchning hittas. Vi använder igen filen test.txt som används för att illustrera Linux cut -kommando . Så se till att du har den här filen innan du fortsätter.
$ awk '$3 ~ /Lira/' test.txtDu kan välja att bara skriva ut en viss del av en matchning om du vill.
11. Räkna det totala antalet rader i inmatning
Kommandot awk har många specialvariabler som gör att vi enkelt kan göra många avancerade saker. En sådan variabel är NR, som innehåller det aktuella radnumret.
$ awk 'END {print NR} ' test.txtDetta kommando kommer att mata ut hur många rader som finns i vår test.txt -fil. Den upprepas först över varje rad, och när den har nått END kommer den att skriva ut värdet på NR - som innehåller det totala antalet rader i det här fallet.
12. Ställ in utmatningsfältavskiljare
Tidigare har vi visat hur man väljer inmatningsfältavskiljare med -F eller –Fältavskiljare alternativ. Kommandot awk låter oss också ange utmatningsfältavskiljaren. Nedanstående exempel visar detta med hjälp av ett praktiskt exempel.
$ date | awk 'OFS='-' {print$2,$3,$6}'Detta kommando skriver ut det aktuella datumet med formatet dd-mm-åå. Kör datumprogrammet utan awk för att se hur standardutmatningen ser ut.
13. Använda If Construct
Som andra populära programmeringsspråk , awk ger också användare if-else-konstruktionerna. If -satsen i awk har syntaxen nedan.
if (expression) { first_action second_action }Motsvarande åtgärder utförs endast om det villkorliga uttrycket är sant. Nedanstående exempel visar detta med hjälp av vår referensfil test.txt .
$ awk '{ if ($4>100) print }' test.txtDu behöver inte behålla indragningen strikt.
14. Använda If-Else Constructs
Du kan konstruera användbara if-else-stegar med syntaxen nedan. De är användbara vid utformning av komplexa awk -skript som hanterar dynamisk data.
if (expression) first_action else second_action$ awk '{ if ($4>100) print; else print }' test.txtKommandot ovan kommer att skriva ut hela referensfilen eftersom det fjärde fältet inte är större än 100 för varje rad.
15. Ställ in fältbredden
Ibland är inmatningsdatan ganska rörig, och användare kan ha svårt att visualisera dem i sina rapporter. Lyckligtvis ger awk en kraftfull inbyggd variabel som kallas FIELDWIDTHS som gör att vi kan definiera en blankstegsseparerad lista med bredder.
$ echo 5675784464657 | awk 'BEGIN {FIELDWIDTHS= '3 4 5'} {print $1, $2, $3}'Det är mycket användbart vid analys av spridda data eftersom vi kan styra utmatningsfältets bredd exakt som vi vill.
16. Ställ in inspelningsseparatorn
RS eller Record Separator är en annan inbyggd variabel som gör att vi kan ange hur poster separeras. Låt oss först skapa en fil som visar hur denna awk -variabel fungerar.
$ cat new.txt Melinda James 23 New Hampshire (222) 466-1234 Daniel James 99 Phonenix Road (322) 677-3412$ awk 'BEGIN{FS=' '; RS=''} {print $1,$3}' new.txtDetta kommando kommer att analysera dokumentet och spotta ut namn och adress för de två personerna.
17. Utskriftsmiljövariabler
Kommandot awk i Linux gör att vi enkelt kan skriva ut miljövariabler med variabeln ENVIRON. Kommandot nedan visar hur du använder detta för att skriva ut innehållet i PATH -variabeln.
$ awk 'BEGIN{ print ENVIRON['PATH'] }'Du kan skriva ut innehållet i alla miljövariabler genom att ersätta ENVIRON -variabelns argument. Kommandot nedan skriver ut värdet på miljövariabeln HEM.
$ awk 'BEGIN{ print ENVIRON['HOME'] }'18. Utelämna vissa fält från utdata
Kommandot awk tillåter oss att utelämna specifika rader från vår produktion. Följande kommando visar detta med hjälp av vår referensfil test.txt .
$ awk -F':' '{$2=''; print}' test.txtDetta kommando kommer att utelämna den andra kolumnen i vår fil, som innehåller huvudstadsnamnet för varje land. Du kan också utelämna mer än ett fält, som visas i nästa kommando.
$ awk -F':' '{$2='';$3='';print}' test.txt19. Ta bort tomma linjer
Ibland kan data innehålla för många tomma rader. Du kan använda kommandot awk för att ta bort tomma rader ganska enkelt. Kolla in nästa kommando för att se hur det fungerar i praktiken.
$ awk '/^[ ]*$/{next}{print}' new.txtVi har tagit bort alla tomma rader från filen new.txt med ett enkelt reguljärt uttryck och en awk inbyggd kallas nästa.
20. Ta bort släpande blanksteg
Utdata från många Linux -kommandon innehåller efterföljande blanksteg. Vi kan använda kommandot awk i Linux för att ta bort sådana blanksteg som mellanslag och flikar. Kolla in kommandot nedan för att se hur du hanterar sådana problem med hjälp av awk.
$ awk '{sub(/[ ]*$/, '');print}' new.txt test.txtLägg till några efterföljande blanksteg i våra referensfiler och verifiera om awk tog bort dem framgångsrikt eller inte. Det gjorde detta framgångsrikt i min maskin.
21. Kontrollera antalet fält i varje rad
Vi kan enkelt kontrollera hur många fält som finns i en rad med hjälp av en enkel awk one-liner. Det finns många sätt att göra detta, men vi kommer att använda några av awks inbyggda variabler för denna uppgift. NR -variabeln ger oss radnumret och NF -variabeln anger antalet fält.
$ awk '{print NR,'-->',NF}' test.txtNu kan vi bekräfta hur många fält det finns per rad i vårt test.txt dokumentera. Eftersom varje rad i den här filen innehåller fem fält är vi säkra på att kommandot fungerar som förväntat.
22. Verifiera aktuellt filnamn
Awk -variabeln FILENAME används för att verifiera det aktuella inmatningsfilnamnet. Vi visar hur detta fungerar med ett enkelt exempel. Det kan dock vara användbart i situationer där filnamnet inte är känt uttryckligen eller om det finns mer än en inmatningsfil.
$ awk '{print FILENAME}' test.txt $ awk '{print FILENAME}' test.txt new.txtKommandona ovan skriver ut filnamnet awk arbetar på varje gång det behandlar en ny rad med inmatningsfiler.
23. Verifiera antalet bearbetade poster
Följande exempel visar hur vi kan verifiera antalet poster som behandlats av kommandot awk. Eftersom ett stort antal Linux -systemadministratörer använder awk för att generera rapporter är det mycket användbart för dem.
$ awk '{print 'Processing Record - ',NR;} END {print ' Total Records Processed:', NR;}' test.txtJag använder ofta detta awk -snutt för att ha en tydlig översikt över mina handlingar. Du kan enkelt justera den för att rymma nya idéer eller handlingar.
24. Skriv ut det totala antalet tecken i en post
Awk -språket ger en praktisk funktion som kallas length () som berättar hur många tecken som finns i en post. Det är mycket användbart i ett antal scenarier. Ta en snabb titt på följande exempel för att se hur detta fungerar.
$ echo 'A random text string...' | awk '{ print length($0); }'$ awk '{ print length($0); }' /etc/passwdKommandot ovan kommer att skriva ut det totala antalet tecken som finns på varje rad i inmatningssträngen eller filen.
25. Skriv ut alla rader längre än en angiven längd
Vi kan lägga till några villkor för kommandot ovan och göra det bara att skriva ut de rader som är större än en fördefinierad längd. Det är användbart när du redan har en uppfattning om längden på en specifik post.
$ echo 'A random text string...' | awk 'length($0) > 10'$ awk '{ length($0) > 5; }' /etc/passwdDu kan kasta in fler alternativ och/eller argument för att justera kommandot baserat på dina krav.
26. Skriv ut antalet rader, tecken och ord
Följande awk -kommando i Linux skriver ut antalet rader, tecken och ord i en given ingång. Den använder NR -variabeln samt grundläggande aritmetik för att utföra denna operation.
$ echo 'This is a input line...' | awk '{ w += NF; c += length + 1 } END { print NR, w, c }'Det visar att det finns 1 rad, 5 ord och exakt 24 tecken i inmatningssträngen.
27. Beräkna ordfrekvens
Vi kan kombinera associativa matriser och for -loop i awk för att beräkna ordfrekvensen för ett dokument. Följande kommando kan verka lite komplext, men det är ganska enkelt när du väl förstår de grundläggande konstruktionerna.
$ awk 'BEGIN {FS='[^a-zA-Z]+' } { for (i=1; i<=NF; i++) words[tolower($i)]++ } END { for (i in words) print i, words[i] }' test.txtOm du har problem med ett-liner-kodavsnittet, kopiera följande kod till en ny fil och kör den med källan.
$ cat > frequency.awk BEGIN { FS='[^a-zA-Z]+' } { for (i=1; i<=NF; i++) words[tolower($i)]++ } END { for (i in words) print i, words[i] }Kör den sedan med -f alternativ.
$ awk -f frequency.awk test.txt28. Byt namn på filer med AWK
Kommandot awk kan användas för att byta namn på alla filer som matchar vissa kriterier. Följande kommando illustrerar hur du använder awk för att döpa om alla .MP3 -filer i en katalog till .mp3 -filer.
$ touch {a,b,c,d,e}.MP3 $ ls *.MP3 | awk '{ printf('mv '%s' '%s' ', $0, tolower($0)) }' $ ls *.MP3 | awk '{ printf('mv '%s' '%s' ', $0, tolower($0)) }' | shFörst skapade vi några demofiler med .MP3 -tillägg. Det andra kommandot visar användaren vad som händer när bytet är lyckat. Slutligen byter det sista kommandot namnoperationen med mv -kommandot i Linux.
29. Skriv ut ett fyrkantigt rot av ett nummer
AWK erbjuder flera inbyggda funktioner för manipulering av siffror. En av dem är funktionen sqrt (). Det är en C-liknande funktion som returnerar kvadratroten för ett givet tal. Ta en snabb titt på nästa exempel för att se hur det fungerar i allmänhet.
$ awk 'BEGIN{ print sqrt(36); print sqrt(0); print sqrt(-16) }'Eftersom du inte kan bestämma kvadratroten för ett negativt tal, kommer utdata att visa ett speciellt nyckelord som heter 'nan' istället för sqrt (-12).
30. Skriv ut logaritmen för ett tal
Awk -funktionsloggen () ger den naturliga logaritmen för ett tal. Det fungerar dock bara med positiva siffror, så var medveten om att validera användarnas inmatning. Annars kan någon bryta dina awk -program och få opålitlig tillgång till systemresurser.
$ awk 'BEGIN{ print log(36); print log(0); print log(-16) }'Du bör se logaritmen 36 och verifiera att logaritmen 0 är oändligt och loggen med ett negativt värde är 'Not a Number' eller nan.
31. Skriv ut ett tals exponential
Den exponentiella os ett tal n ger värdet av e^n. Det används vanligtvis i awk -skript som handlar om stora siffror eller komplex aritmetisk logik. Vi kan generera exponentialen för ett tal med den inbyggda awk-funktionen exp ().
$ awk 'BEGIN{ print exp(30); print log(0); print exp(-16) }'Awk kan dock inte beräkna exponentiell för extremt stora tal. Du bör göra sådana beräkningar med programmeringsspråk på låg nivå som C och mata värdet till dina awk-skript.
32. Generera slumpmässiga nummer med AWK
Vi kan använda kommandot awk i Linux för att generera slumpmässiga nummer. Dessa nummer kommer att ligga i intervallet 0 till 1, men aldrig 0 eller 1. Du kan multiplicera ett fast värde med det resulterande talet för att få ett större slumpmässigt värde.
$ awk 'BEGIN{ print rand(); print rand()*99 }'Rand () -funktionen behöver inget argument. Dessutom är siffrorna som genereras av denna funktion inte exakt slumpmässiga utan snarare pseudoslumpmässiga. Dessutom är det ganska enkelt att förutsäga dessa siffror från körning till körning. Så du bör inte lita på dem för känsliga beräkningar.
33. Färgkompilatorvarningar i rött
Moderna Linux -kompilatorer kommer att kasta varningar om din kod inte upprätthåller språkstandarder eller har fel som inte stoppar programkörningen. Följande awk -kommando kommer att skriva ut varningsraderna som genereras av en kompilator i rött.
$ gcc -Wall main.c |& awk '/: warning:/{print 'x1B[01;31m' $0 'x1B[m';next;}{print}'Detta kommando är användbart om du vill specificera kompilatorvarningar specifikt. Du kan använda detta kommando med valfri kompilator än gcc, bara se till att ändra mönstret /: varning: / för att återspegla just den kompilatorn.
34. Skriv ut UUID -informationen för filsystemet
UUID eller Universellt unik identifierare är ett nummer som kan användas för att identifiera resurser som Linux -filsystemet . Vi kan helt enkelt skriva ut UUID -informationen i vårt filsystem med hjälp av följande Linux awk -kommando.
$ awk '/UUID/ {print $0}' /etc/fstabDetta kommando söker efter texten UUID i /etc/fstab fil med hjälp av awk -mönster. Det returnerar en kommentar från filen som vi inte är intresserade av. Kommandot nedan ser till att vi bara får de rader som börjar med UUID.
$ awk '/^UUID/ {print $1}' /etc/fstabDet begränsar utmatningen till det första fältet. Så vi får bara UUID -numren.
35. Skriv ut Linux Kernel Image Version
Olika Linux -kärnbilder används av olika Linux -distributioner . Vi kan enkelt skriva ut den exakta kärnbild som vårt system bygger på att använda awk. Kolla in följande kommando för att se hur det fungerar i allmänhet.
$ uname -a | awk '{print $3}'Vi har först utfärdat kommandot uname med -till alternativet och skickade sedan dessa data till awk. Sedan har vi extraherat versionsinformationen för kärnbilden med hjälp av awk.
36. Lägg till radnummer före rader
Användare kan stöta på textfiler som inte innehåller radnummer ganska ofta. Lyckligtvis kan du enkelt lägga till radnummer till en fil med hjälp av kommandot awk i Linux. Ta en närmare titt på exemplet nedan för att se hur detta fungerar i verkliga livet.
$ awk '{ print FNR '. ' $0 ;next}{print}' test.txtKommandot ovan lägger till ett radnummer före var och en av raderna i vår test.txt -referensfil. Den använder den inbyggda awk-variabeln FNR för att hantera detta.
37. Skriv ut en fil efter att innehållet har sorterats
Vi kan också använda awk för att skriva ut en sorterad lista över alla rader. Följande kommandon skriver ut namnet på alla länder i vår test.txt i sorterad ordning.
$ awk -F ':' '{ print $1 }' test.txt | sortNästa kommando kommer att skriva ut inloggningsnamnet för alla användare från /etc/passwd fil.
$ awk -F ':' '{ print $1 }' /etc/passwd | sortDu kan enkelt ändra sorteringsordningen genom att ändra sorteringskommandot.
38. Skriv ut den manuella sidan
Den manuella sidan innehåller detaljerad information om kommandot awk tillsammans med alla tillgängliga alternativ. Det är oerhört viktigt för människor som vill behärska awk -kommandot noggrant.
$ man awkOm du vill lära dig komplexa awk -funktioner kommer det här att vara till stor hjälp för dig. Läs den här dokumentationen när du har problem.
39. Skriv ut hjälpsidan
Hjälpsidan innehåller sammanfattad information om alla möjliga kommandoradsargument. Du kan använda hjälpguiden för awk med ett av följande kommandon.
$ awk -h $ awk --helpSe den här sidan om du vill ha en snabb översikt över alla tillgängliga alternativ för awk.
40. Skriv ut versioninformation
Versionsinformationen ger oss information om hur ett program byggs. Versionssidan för awk innehåller information som dess upphovsrätt, sammanställningsverktyg och så vidare. Du kan visa denna information med ett av följande awk -kommandon.
$ awk -V $ awk --versionAvslutande tankar
Kommandot awk i Linux tillåter oss att göra alla möjliga saker, inklusive filbehandling och systemunderhåll. Det ger ett brett utbud av funktioner för att hantera dagliga datoruppgifter ganska enkelt. Våra redaktörer har sammanställt denna guide med 40 användbara awk -kommandon som kan användas för textmanipulering eller administration. Eftersom AWK är ett fullvärdigt programmeringsspråk i sig, finns det flera sätt att göra samma jobb. Så undra inte varför vi gör vissa saker på ett annat sätt. Du kan alltid kurera dina egna recept baserat på din kompetens och erfarenhet. Lämna oss dina tankar, meddela oss om du har några frågor.
Dela med sig Facebook Twitter Pinterest WhatsApp ReddIt Telegram Viber
- Taggar
- Programmeringsverktyg
- Systemverktyg
7 KOMMENTARER
- Ramesh 24 april 2020 klockan 07:48
Vad är bäst sed eller awk?
Svar
- lauhub 6 januari 2021 Kl. 04:41
Båda är bäst:
- sed är användbart för enkla ersättnings-/utgåva -uppgifter och har vissa begränsningar när det gäller att programmera komplexa uppgifter (även om avancerade användare kan göra många saker)
- awk måste vara mer omfattande för enkla uppgifter men gör det möjligt att använda mer komplexa datastrukturer för mer komplex programmering.
Hur som helst, allt beror på dina behov och kunskap om dessa verktyg
Svar- DC 16 juli 2021 Kl. 09:17
Båda är funktionellt olika. sed är begränsad funktionalitet. Normalt används för inline hitta och ersätt strängredigerare.
Svar
awk används för datamanipulering och ger fler programmeringsfunktioner- Ahmed 16 april 2020 Klockan 13:24
Hej,
Svar
Exemplen är bra men det hade varit bättre om du också hade postat utdata efter exempel.
- Rubaiat Hossain 18 april 2020 Klockan 01:28
Tack, Ahmed för att du följer oss. Vi är dock rädda att att lägga till separata bilder för varje kommando kommer att göra guiden extremt lång och därför kan användare som läser detta från små skärmar som telefoner/surfplattor möta oönskad rullningsupplevelse.
Dessutom uppmuntrar vi våra läsare att tweak dessa awk-kommandon i Linux när du är på språng och prova dem från första hand. På så sätt behärskar du dem snabbare.
Svar- Stefan 6 april 2020 klockan 10:54
Utmärkta exempel. Tack för den här
Svar- Karan Grover 2 april 2020 Klockan 17:29
fina okej exempel
SvarLÄMNA ETT SVAR Avbryt svar
Kommentar: Ange din kommentar! Namn:* Ange ditt namn här E -post:* Du har angett en felaktig e -postadress! Ange din e -postadress här Webbplats:Spara mitt namn, mejl och webbplats i den här webbläsaren för nästa gång jag kommenterar.
Senaste posten
Android10 bästa ansiktsbytesappar för Android och iOS -enhet
Windows OSHur man schemalägger Windows 10 för att tömma papperskorgen automatiskt
AndroidDe 10 bästa faktureringsapparna för Android -enheter för att få betalt snabbt
Windows OSDe 10 bästa GPU -riktmärken för din dator
Måste läsas
LinuxHur man installerar och konfigurerar XAMPP på Ubuntu Linux
LinuxUbuntu Communitheme - Ett nytt Ubuntu Community -tema
LinuxHur man installerar programvara från källkoden i ditt Linux -system
LinuxRedNotebook - En modern och gratis dagbok och journalprogramvara för Linux
Relaterade inlägg
Så här installerar och konfigurerar du Cockpit Web Console på Linux System
Hur man installerar och konfigurerar Yii PHP Framework på Ubuntu Linux
Hur man fixar W: Vissa indexfiler kunde inte ladda ner Fel i Ubuntu Linux
Så här installerar och konfigurerar du 1Password på Linux Desktop
Så här installerar du den senaste GNU Nano -textredigeraren på Linux -skrivbordet
Så här installerar du en ny Relic Infrastructure Agent i Linux -systemet
$ awk '{ length(Hem A-Z-kommandon 40 Praktiskt och användbart awk -kommando i Linux och BSD FörbiMehedi Hasan IA-Z-kommandonUtvalda 1271 7 ) > 5; }' /etc/passwdINNEHÅLL
- Förstå AWK -program
- Praktiska exempel på awk Command i Linux
- 1. Skriv ut specifika fält från textutmatning
- 2. Skriv ut flera fält från textutmatning
- 3. Använd BEGIN -uttalanden
- 4. Använd SLUT -uttalanden
- 5. Sök med hjälp av mönster
- 6. Extrahera information från filer
- 7. Läs AWK -skript från källfilen
- 8. Ställ in inmatningsfältet
- 9. Skriv ut information baserat på skick
- 10. Skriv ut information genom att jämföra vanliga uttryck
- 11. Räkna det totala antalet rader i inmatning
- 12. Ställ in utmatningsfältavskiljare
- 13. Använda If Construct
- 14. Använda If-Else Constructs
- 15. Ställ in fältbredden
- 16. Ställ in inspelningsseparatorn
- 17. Utskriftsmiljövariabler
- 18. Utelämna vissa fält från utdata
- 19. Ta bort tomma linjer
- 20. Ta bort släpande blanksteg
- 21. Kontrollera antalet fält i varje rad
- 22. Verifiera aktuellt filnamn
- 23. Verifiera antalet bearbetade poster
- 24. Skriv ut det totala antalet tecken i en post
- 25. Skriv ut alla rader längre än en angiven längd
- 26. Skriv ut antalet rader, tecken och ord
- 27. Beräkna ordfrekvens
- 28. Byt namn på filer med AWK
- 29. Skriv ut ett fyrkantigt rot av ett nummer
- 30. Skriv ut logaritmen för ett tal
- 31. Skriv ut ett tals exponential
- 32. Generera slumpmässiga nummer med AWK
- 33. Färgkompilatorvarningar i rött
- 34. Skriv ut UUID -informationen för filsystemet
- 35. Skriv ut Linux Kernel Image Version
- 36. Lägg till radnummer före rader
- 37. Skriv ut en fil efter att innehållet har sorterats
- 38. Skriv ut den manuella sidan
- 39. Skriv ut hjälpsidan
- 40. Skriv ut versioninformation
- Avslutande tankar
AWK är ett kraftfullt> fullfjädrat programmeringsspråk . AWK får sitt namn från initialerna till dess författare - Aho, Weinberger och Kernighan. Awk -kommandot i Linux och andra Unix -system åberopar tolken som kör AWK -skript. Flera implementeringar av awk finns i de senaste systemen som bland annat gawk (GNU awk), mawk (Minimal awk) och nawk (New awk). Kolla in exemplen nedan om du vill behärska awk.
Förstå AWK -program
Program skrivna i awk består av regler, som helt enkelt är ett par mönster och handlingar. Mönstren är grupperade i en tandställning {}, och åtgärdsdelen utlöses när awk hittar texter som matchar mönstret. Även om awk utvecklades för att skriva enliners, kan erfarna användare enkelt skriva komplexa skript med det.
AWK-program är mycket användbara för storskalig filbehandling. Det identifierar textfält med specialtecken och separatorer. Det erbjuder också programmeringskonstruktioner på hög nivå som arrays och loopar. Så att skriva robusta program med vanlig awk är mycket genomförbart.
Praktiska exempel på awk Command i Linux
Administratörer använder normalt awk för datautvinning och rapportering tillsammans med andra typer av filmanipulationer. Nedan har vi diskuterat awk mer detaljerat. Följ kommandona noga och prova dem i din terminal för en fullständig förståelse.
1. Skriv ut specifika fält från textutmatning
Mest mycket använda Linux -kommandon visa sin produktion med olika fält. Normalt använder vi Linux cut -kommandot för att extrahera ett specifikt fält från sådana data. Kommandot nedan visar dig dock hur du gör detta med kommandot awk.
$ who | awk '{print $1}'Detta kommando visar bara det första fältet från utdata från who -kommandot. Så du får helt enkelt användarnamnen för alla loggade användare. Här, $ 1 representerar det första fältet. Du måste använda $ N om du vill extrahera det n: e fältet.
2. Skriv ut flera fält från textutmatning
Awk -tolken gör att vi kan skriva ut hur många fält som helst. Nedanstående exempel visar hur vi extraherar de två första fälten från utdata från who -kommandot.
$ who | awk '{print $1, $2}'Du kan också styra ordningen på utdatafälten. Följande exempel visar först den andra kolumnen som produceras av who -kommandot och sedan den första kolumnen i det andra fältet.
$ who | awk '{print $2, $1}'Lämna bara fältparametrarna ( $ N ) för att visa hela data.
3. Använd BEGIN -uttalanden
BEGIN -satsen tillåter användare att skriva ut viss känd information i utdata. Det används vanligtvis för att formatera utdata som genereras av awk. Syntaxen för detta uttalande visas nedan.
BEGIN { Actions} {ACTION}De åtgärder som bildar BEGIN -sektionen utlöses alltid. Sedan läser awk de återstående raderna en efter en och ser om något behöver göras.
$ who | awk 'BEGIN {print 'User From'} {print $1, $2}'Kommandot ovan kommer att märka de två utmatningsfälten som extraheras från who -kommandot.
4. Använd SLUT -uttalanden
Du kan också använda END -satsen för att se till att vissa åtgärder alltid utförs i slutet av din operation. Placera helt enkelt END -sektionen efter huvuduppsättningen.
$ who | awk 'BEGIN {print 'User From'} {print $1, $2} END {print '--COMPLETED--'}'Kommandot ovan kommer att lägga till den givna strängen i slutet av utdata.
5. Sök med hjälp av mönster
En stor del av awks arbete innebär mönstermatchning och regex. Som vi redan har diskuterat, söker awk efter mönster i varje inmatningsrad och utför bara åtgärden när en matchning utlöses. Våra tidigare regler bestod av endast handlingar. Nedan har vi illustrerat grunderna för mönstermatchning med hjälp av kommandot awk i Linux.
$ who | awk '/mary/ {print}'Detta kommando kommer att se om användaren mary för närvarande är inloggad eller inte. Det kommer att mata ut hela raden om någon matchning hittas.
6. Extrahera information från filer
Kommandot awk fungerar mycket bra med filer och kan användas för komplexa filbehandlingsuppgifter. Följande kommando illustrerar hur awk hanterar filer.
$ awk '/hello/ {print}' /usr/share/dict/american-englishDetta kommando söker efter mönstret 'hej' i den amerikansk-engelska ordlistfilen. Den finns på de flesta Linux-baserade distributioner . Således kan du enkelt prova awk -program på den här filen.
7. Läs AWK -skript från källfilen
Även om det är användbart att skriva enlinjeprogram, kan du också skriva stora program med awk helt. Du vill spara dem och köra ditt program med hjälp av källfilen.
$ awk -f script-file $ awk --file script-fileDe -f eller -fil alternativet låter oss ange programfilen. Du behöver dock inte använda citattecken (‘‘) inuti skriptfilen eftersom Linux-skalet inte tolkar programkoden på detta sätt.
8. Ställ in inmatningsfältet
En fältavskiljare är en avgränsare som delar inmatningsposten. Vi kan enkelt ange fältavskiljare att awk med hjälp av -F eller –Fältavskiljare alternativ. Kolla in kommandona nedan för att se hur detta fungerar.
$ echo 'This-is-a-simple-example' | awk -F - ' {print $1} ' $ echo 'This-is-a-simple-example' | awk --field-separator - ' {print $1} 'Det fungerar på samma sätt när man använder skriptfiler snarare än ett-linjers awk-kommando i Linux.
9. Skriv ut information baserat på skick
Vi har diskuterat kommandot Linux cut i en tidigare guide. Nu visar vi dig hur du extraherar information med hjälp av awk endast när vissa kriterier matchas. Vi kommer att använda samma testfil som vi använde i den guiden. Så gå dit och gör en kopia av test.txt fil.
$ awk '$4 > 50' test.txtDetta kommando kommer att skriva ut alla nationer från filen test.txt, som har mer än 50 miljoner invånare.
10. Skriv ut information genom att jämföra vanliga uttryck
Följande awk -kommando kontrollerar om det tredje fältet på en rad innehåller mönstret 'Lira' och skriver ut hela raden om en matchning hittas. Vi använder igen filen test.txt som används för att illustrera Linux cut -kommando . Så se till att du har den här filen innan du fortsätter.
$ awk '$3 ~ /Lira/' test.txtDu kan välja att bara skriva ut en viss del av en matchning om du vill.
11. Räkna det totala antalet rader i inmatning
Kommandot awk har många specialvariabler som gör att vi enkelt kan göra många avancerade saker. En sådan variabel är NR, som innehåller det aktuella radnumret.
$ awk 'END {print NR} ' test.txtDetta kommando kommer att mata ut hur många rader som finns i vår test.txt -fil. Den upprepas först över varje rad, och när den har nått END kommer den att skriva ut värdet på NR - som innehåller det totala antalet rader i det här fallet.
12. Ställ in utmatningsfältavskiljare
Tidigare har vi visat hur man väljer inmatningsfältavskiljare med -F eller –Fältavskiljare alternativ. Kommandot awk låter oss också ange utmatningsfältavskiljaren. Nedanstående exempel visar detta med hjälp av ett praktiskt exempel.
$ date | awk 'OFS='-' {print$2,$3,$6}'Detta kommando skriver ut det aktuella datumet med formatet dd-mm-åå. Kör datumprogrammet utan awk för att se hur standardutmatningen ser ut.
13. Använda If Construct
Som andra populära programmeringsspråk , awk ger också användare if-else-konstruktionerna. If -satsen i awk har syntaxen nedan.
if (expression) { first_action second_action }Motsvarande åtgärder utförs endast om det villkorliga uttrycket är sant. Nedanstående exempel visar detta med hjälp av vår referensfil test.txt .
$ awk '{ if ($4>100) print }' test.txtDu behöver inte behålla indragningen strikt.
14. Använda If-Else Constructs
Du kan konstruera användbara if-else-stegar med syntaxen nedan. De är användbara vid utformning av komplexa awk -skript som hanterar dynamisk data.
if (expression) first_action else second_action$ awk '{ if ($4>100) print; else print }' test.txtKommandot ovan kommer att skriva ut hela referensfilen eftersom det fjärde fältet inte är större än 100 för varje rad.
15. Ställ in fältbredden
Ibland är inmatningsdatan ganska rörig, och användare kan ha svårt att visualisera dem i sina rapporter. Lyckligtvis ger awk en kraftfull inbyggd variabel som kallas FIELDWIDTHS som gör att vi kan definiera en blankstegsseparerad lista med bredder.
$ echo 5675784464657 | awk 'BEGIN {FIELDWIDTHS= '3 4 5'} {print $1, $2, $3}'Det är mycket användbart vid analys av spridda data eftersom vi kan styra utmatningsfältets bredd exakt som vi vill.
16. Ställ in inspelningsseparatorn
RS eller Record Separator är en annan inbyggd variabel som gör att vi kan ange hur poster separeras. Låt oss först skapa en fil som visar hur denna awk -variabel fungerar.
$ cat new.txt Melinda James 23 New Hampshire (222) 466-1234 Daniel James 99 Phonenix Road (322) 677-3412$ awk 'BEGIN{FS=' '; RS=''} {print $1,$3}' new.txtDetta kommando kommer att analysera dokumentet och spotta ut namn och adress för de två personerna.
17. Utskriftsmiljövariabler
Kommandot awk i Linux gör att vi enkelt kan skriva ut miljövariabler med variabeln ENVIRON. Kommandot nedan visar hur du använder detta för att skriva ut innehållet i PATH -variabeln.
$ awk 'BEGIN{ print ENVIRON['PATH'] }'Du kan skriva ut innehållet i alla miljövariabler genom att ersätta ENVIRON -variabelns argument. Kommandot nedan skriver ut värdet på miljövariabeln HEM.
$ awk 'BEGIN{ print ENVIRON['HOME'] }'18. Utelämna vissa fält från utdata
Kommandot awk tillåter oss att utelämna specifika rader från vår produktion. Följande kommando visar detta med hjälp av vår referensfil test.txt .
$ awk -F':' '{$2=''; print}' test.txtDetta kommando kommer att utelämna den andra kolumnen i vår fil, som innehåller huvudstadsnamnet för varje land. Du kan också utelämna mer än ett fält, som visas i nästa kommando.
$ awk -F':' '{$2='';$3='';print}' test.txt19. Ta bort tomma linjer
Ibland kan data innehålla för många tomma rader. Du kan använda kommandot awk för att ta bort tomma rader ganska enkelt. Kolla in nästa kommando för att se hur det fungerar i praktiken.
$ awk '/^[ ]*$/{next}{print}' new.txtVi har tagit bort alla tomma rader från filen new.txt med ett enkelt reguljärt uttryck och en awk inbyggd kallas nästa.
20. Ta bort släpande blanksteg
Utdata från många Linux -kommandon innehåller efterföljande blanksteg. Vi kan använda kommandot awk i Linux för att ta bort sådana blanksteg som mellanslag och flikar. Kolla in kommandot nedan för att se hur du hanterar sådana problem med hjälp av awk.
$ awk '{sub(/[ ]*$/, '');print}' new.txt test.txtLägg till några efterföljande blanksteg i våra referensfiler och verifiera om awk tog bort dem framgångsrikt eller inte. Det gjorde detta framgångsrikt i min maskin.
21. Kontrollera antalet fält i varje rad
Vi kan enkelt kontrollera hur många fält som finns i en rad med hjälp av en enkel awk one-liner. Det finns många sätt att göra detta, men vi kommer att använda några av awks inbyggda variabler för denna uppgift. NR -variabeln ger oss radnumret och NF -variabeln anger antalet fält.
$ awk '{print NR,'-->',NF}' test.txtNu kan vi bekräfta hur många fält det finns per rad i vårt test.txt dokumentera. Eftersom varje rad i den här filen innehåller fem fält är vi säkra på att kommandot fungerar som förväntat.
22. Verifiera aktuellt filnamn
Awk -variabeln FILENAME används för att verifiera det aktuella inmatningsfilnamnet. Vi visar hur detta fungerar med ett enkelt exempel. Det kan dock vara användbart i situationer där filnamnet inte är känt uttryckligen eller om det finns mer än en inmatningsfil.
$ awk '{print FILENAME}' test.txt $ awk '{print FILENAME}' test.txt new.txtKommandona ovan skriver ut filnamnet awk arbetar på varje gång det behandlar en ny rad med inmatningsfiler.
23. Verifiera antalet bearbetade poster
Följande exempel visar hur vi kan verifiera antalet poster som behandlats av kommandot awk. Eftersom ett stort antal Linux -systemadministratörer använder awk för att generera rapporter är det mycket användbart för dem.
$ awk '{print 'Processing Record - ',NR;} END {print ' Total Records Processed:', NR;}' test.txtJag använder ofta detta awk -snutt för att ha en tydlig översikt över mina handlingar. Du kan enkelt justera den för att rymma nya idéer eller handlingar.
24. Skriv ut det totala antalet tecken i en post
Awk -språket ger en praktisk funktion som kallas length () som berättar hur många tecken som finns i en post. Det är mycket användbart i ett antal scenarier. Ta en snabb titt på följande exempel för att se hur detta fungerar.
$ echo 'A random text string...' | awk '{ print length($0); }'$ awk '{ print length($0); }' /etc/passwdKommandot ovan kommer att skriva ut det totala antalet tecken som finns på varje rad i inmatningssträngen eller filen.
25. Skriv ut alla rader längre än en angiven längd
Vi kan lägga till några villkor för kommandot ovan och göra det bara att skriva ut de rader som är större än en fördefinierad längd. Det är användbart när du redan har en uppfattning om längden på en specifik post.
$ echo 'A random text string...' | awk 'length($0) > 10'$ awk '{ length($0) > 5; }' /etc/passwdDu kan kasta in fler alternativ och/eller argument för att justera kommandot baserat på dina krav.
26. Skriv ut antalet rader, tecken och ord
Följande awk -kommando i Linux skriver ut antalet rader, tecken och ord i en given ingång. Den använder NR -variabeln samt grundläggande aritmetik för att utföra denna operation.
$ echo 'This is a input line...' | awk '{ w += NF; c += length + 1 } END { print NR, w, c }'Det visar att det finns 1 rad, 5 ord och exakt 24 tecken i inmatningssträngen.
27. Beräkna ordfrekvens
Vi kan kombinera associativa matriser och for -loop i awk för att beräkna ordfrekvensen för ett dokument. Följande kommando kan verka lite komplext, men det är ganska enkelt när du väl förstår de grundläggande konstruktionerna.
$ awk 'BEGIN {FS='[^a-zA-Z]+' } { for (i=1; i<=NF; i++) words[tolower($i)]++ } END { for (i in words) print i, words[i] }' test.txtOm du har problem med ett-liner-kodavsnittet, kopiera följande kod till en ny fil och kör den med källan.
$ cat > frequency.awk BEGIN { FS='[^a-zA-Z]+' } { for (i=1; i<=NF; i++) words[tolower($i)]++ } END { for (i in words) print i, words[i] }Kör den sedan med -f alternativ.
$ awk -f frequency.awk test.txt28. Byt namn på filer med AWK
Kommandot awk kan användas för att byta namn på alla filer som matchar vissa kriterier. Följande kommando illustrerar hur du använder awk för att döpa om alla .MP3 -filer i en katalog till .mp3 -filer.
$ touch {a,b,c,d,e}.MP3 $ ls *.MP3 | awk '{ printf('mv '%s' '%s' ', $0, tolower($0)) }' $ ls *.MP3 | awk '{ printf('mv '%s' '%s' ', $0, tolower($0)) }' | shFörst skapade vi några demofiler med .MP3 -tillägg. Det andra kommandot visar användaren vad som händer när bytet är lyckat. Slutligen byter det sista kommandot namnoperationen med mv -kommandot i Linux.
29. Skriv ut ett fyrkantigt rot av ett nummer
AWK erbjuder flera inbyggda funktioner för manipulering av siffror. En av dem är funktionen sqrt (). Det är en C-liknande funktion som returnerar kvadratroten för ett givet tal. Ta en snabb titt på nästa exempel för att se hur det fungerar i allmänhet.
$ awk 'BEGIN{ print sqrt(36); print sqrt(0); print sqrt(-16) }'Eftersom du inte kan bestämma kvadratroten för ett negativt tal, kommer utdata att visa ett speciellt nyckelord som heter 'nan' istället för sqrt (-12).
30. Skriv ut logaritmen för ett tal
Awk -funktionsloggen () ger den naturliga logaritmen för ett tal. Det fungerar dock bara med positiva siffror, så var medveten om att validera användarnas inmatning. Annars kan någon bryta dina awk -program och få opålitlig tillgång till systemresurser.
$ awk 'BEGIN{ print log(36); print log(0); print log(-16) }'Du bör se logaritmen 36 och verifiera att logaritmen 0 är oändligt och loggen med ett negativt värde är 'Not a Number' eller nan.
31. Skriv ut ett tals exponential
Den exponentiella os ett tal n ger värdet av e^n. Det används vanligtvis i awk -skript som handlar om stora siffror eller komplex aritmetisk logik. Vi kan generera exponentialen för ett tal med den inbyggda awk-funktionen exp ().
$ awk 'BEGIN{ print exp(30); print log(0); print exp(-16) }'Awk kan dock inte beräkna exponentiell för extremt stora tal. Du bör göra sådana beräkningar med programmeringsspråk på låg nivå som C och mata värdet till dina awk-skript.
32. Generera slumpmässiga nummer med AWK
Vi kan använda kommandot awk i Linux för att generera slumpmässiga nummer. Dessa nummer kommer att ligga i intervallet 0 till 1, men aldrig 0 eller 1. Du kan multiplicera ett fast värde med det resulterande talet för att få ett större slumpmässigt värde.
$ awk 'BEGIN{ print rand(); print rand()*99 }'Rand () -funktionen behöver inget argument. Dessutom är siffrorna som genereras av denna funktion inte exakt slumpmässiga utan snarare pseudoslumpmässiga. Dessutom är det ganska enkelt att förutsäga dessa siffror från körning till körning. Så du bör inte lita på dem för känsliga beräkningar.
33. Färgkompilatorvarningar i rött
Moderna Linux -kompilatorer kommer att kasta varningar om din kod inte upprätthåller språkstandarder eller har fel som inte stoppar programkörningen. Följande awk -kommando kommer att skriva ut varningsraderna som genereras av en kompilator i rött.
$ gcc -Wall main.c |& awk '/: warning:/{print 'x1B[01;31m' $0 'x1B[m';next;}{print}'Detta kommando är användbart om du vill specificera kompilatorvarningar specifikt. Du kan använda detta kommando med valfri kompilator än gcc, bara se till att ändra mönstret /: varning: / för att återspegla just den kompilatorn.
34. Skriv ut UUID -informationen för filsystemet
UUID eller Universellt unik identifierare är ett nummer som kan användas för att identifiera resurser som Linux -filsystemet . Vi kan helt enkelt skriva ut UUID -informationen i vårt filsystem med hjälp av följande Linux awk -kommando.
$ awk '/UUID/ {print $0}' /etc/fstabDetta kommando söker efter texten UUID i /etc/fstab fil med hjälp av awk -mönster. Det returnerar en kommentar från filen som vi inte är intresserade av. Kommandot nedan ser till att vi bara får de rader som börjar med UUID.
$ awk '/^UUID/ {print $1}' /etc/fstabDet begränsar utmatningen till det första fältet. Så vi får bara UUID -numren.
35. Skriv ut Linux Kernel Image Version
Olika Linux -kärnbilder används av olika Linux -distributioner . Vi kan enkelt skriva ut den exakta kärnbild som vårt system bygger på att använda awk. Kolla in följande kommando för att se hur det fungerar i allmänhet.
$ uname -a | awk '{print $3}'Vi har först utfärdat kommandot uname med -till alternativet och skickade sedan dessa data till awk. Sedan har vi extraherat versionsinformationen för kärnbilden med hjälp av awk.
36. Lägg till radnummer före rader
Användare kan stöta på textfiler som inte innehåller radnummer ganska ofta. Lyckligtvis kan du enkelt lägga till radnummer till en fil med hjälp av kommandot awk i Linux. Ta en närmare titt på exemplet nedan för att se hur detta fungerar i verkliga livet.
$ awk '{ print FNR '. ' $0 ;next}{print}' test.txtKommandot ovan lägger till ett radnummer före var och en av raderna i vår test.txt -referensfil. Den använder den inbyggda awk-variabeln FNR för att hantera detta.
37. Skriv ut en fil efter att innehållet har sorterats
Vi kan också använda awk för att skriva ut en sorterad lista över alla rader. Följande kommandon skriver ut namnet på alla länder i vår test.txt i sorterad ordning.
$ awk -F ':' '{ print $1 }' test.txt | sortNästa kommando kommer att skriva ut inloggningsnamnet för alla användare från /etc/passwd fil.
$ awk -F ':' '{ print $1 }' /etc/passwd | sortDu kan enkelt ändra sorteringsordningen genom att ändra sorteringskommandot.
38. Skriv ut den manuella sidan
Den manuella sidan innehåller detaljerad information om kommandot awk tillsammans med alla tillgängliga alternativ. Det är oerhört viktigt för människor som vill behärska awk -kommandot noggrant.
$ man awkOm du vill lära dig komplexa awk -funktioner kommer det här att vara till stor hjälp för dig. Läs den här dokumentationen när du har problem.
39. Skriv ut hjälpsidan
Hjälpsidan innehåller sammanfattad information om alla möjliga kommandoradsargument. Du kan använda hjälpguiden för awk med ett av följande kommandon.
$ awk -h $ awk --helpSe den här sidan om du vill ha en snabb översikt över alla tillgängliga alternativ för awk.
40. Skriv ut versioninformation
Versionsinformationen ger oss information om hur ett program byggs. Versionssidan för awk innehåller information som dess upphovsrätt, sammanställningsverktyg och så vidare. Du kan visa denna information med ett av följande awk -kommandon.
$ awk -V $ awk --versionAvslutande tankar
Kommandot awk i Linux tillåter oss att göra alla möjliga saker, inklusive filbehandling och systemunderhåll. Det ger ett brett utbud av funktioner för att hantera dagliga datoruppgifter ganska enkelt. Våra redaktörer har sammanställt denna guide med 40 användbara awk -kommandon som kan användas för textmanipulering eller administration. Eftersom AWK är ett fullvärdigt programmeringsspråk i sig, finns det flera sätt att göra samma jobb. Så undra inte varför vi gör vissa saker på ett annat sätt. Du kan alltid kurera dina egna recept baserat på din kompetens och erfarenhet. Lämna oss dina tankar, meddela oss om du har några frågor.
Dela med sig Facebook Twitter Pinterest WhatsApp ReddIt Telegram Viber
- Taggar
- Programmeringsverktyg
- Systemverktyg
7 KOMMENTARER
- Ramesh 24 april 2020 klockan 07:48
Vad är bäst sed eller awk?
Svar
- lauhub 6 januari 2021 Kl. 04:41
Båda är bäst:
- sed är användbart för enkla ersättnings-/utgåva -uppgifter och har vissa begränsningar när det gäller att programmera komplexa uppgifter (även om avancerade användare kan göra många saker)
- awk måste vara mer omfattande för enkla uppgifter men gör det möjligt att använda mer komplexa datastrukturer för mer komplex programmering.
Hur som helst, allt beror på dina behov och kunskap om dessa verktyg
Svar- DC 16 juli 2021 Kl. 09:17
Båda är funktionellt olika. sed är begränsad funktionalitet. Normalt används för inline hitta och ersätt strängredigerare.
Svar
awk används för datamanipulering och ger fler programmeringsfunktioner- Ahmed 16 april 2020 Klockan 13:24
Hej,
Svar
Exemplen är bra men det hade varit bättre om du också hade postat utdata efter exempel.
- Rubaiat Hossain 18 april 2020 Klockan 01:28
Tack, Ahmed för att du följer oss. Vi är dock rädda att att lägga till separata bilder för varje kommando kommer att göra guiden extremt lång och därför kan användare som läser detta från små skärmar som telefoner/surfplattor möta oönskad rullningsupplevelse.
Dessutom uppmuntrar vi våra läsare att tweak dessa awk-kommandon i Linux när du är på språng och prova dem från första hand. På så sätt behärskar du dem snabbare.
Svar- Stefan 6 april 2020 klockan 10:54
Utmärkta exempel. Tack för den här
Svar- Karan Grover 2 april 2020 Klockan 17:29
fina okej exempel
SvarLÄMNA ETT SVAR Avbryt svar
Kommentar: Ange din kommentar! Namn:* Ange ditt namn här E -post:* Du har angett en felaktig e -postadress! Ange din e -postadress här Webbplats:Spara mitt namn, mejl och webbplats i den här webbläsaren för nästa gång jag kommenterar.
Senaste posten
Android10 bästa ansiktsbytesappar för Android och iOS -enhet
Windows OSHur man schemalägger Windows 10 för att tömma papperskorgen automatiskt
AndroidDe 10 bästa faktureringsapparna för Android -enheter för att få betalt snabbt
Windows OSDe 10 bästa GPU -riktmärken för din dator
Måste läsas
LinuxHur man installerar och konfigurerar XAMPP på Ubuntu Linux
LinuxUbuntu Communitheme - Ett nytt Ubuntu Community -tema
LinuxHur man installerar programvara från källkoden i ditt Linux -system
LinuxRedNotebook - En modern och gratis dagbok och journalprogramvara för Linux
Relaterade inlägg
Så här installerar och konfigurerar du Cockpit Web Console på Linux System
Hur man installerar och konfigurerar Yii PHP Framework på Ubuntu Linux
Hur man fixar W: Vissa indexfiler kunde inte ladda ner Fel i Ubuntu Linux
Så här installerar och konfigurerar du 1Password på Linux Desktop
Så här installerar du den senaste GNU Nano -textredigeraren på Linux -skrivbordet
Så här installerar du en ny Relic Infrastructure Agent i Linux -systemet
Du kan kasta in fler alternativ och/eller argument för att justera kommandot baserat på dina krav.
26. Skriv ut antalet rader, tecken och ord
Följande awk -kommando i Linux skriver ut antalet rader, tecken och ord i en given ingång. Den använder NR -variabeln samt grundläggande aritmetik för att utföra denna operation.
$ echo 'This is a input line...' | awk '{ w += NF; c += length + 1 } END { print NR, w, c }'
Det visar att det finns 1 rad, 5 ord och exakt 24 tecken i inmatningssträngen.
27. Beräkna ordfrekvens
Vi kan kombinera associativa matriser och for -loop i awk för att beräkna ordfrekvensen för ett dokument. Följande kommando kan verka lite komplext, men det är ganska enkelt när du väl förstår de grundläggande konstruktionerna.
$ awk 'BEGIN {FS='[^a-zA-Z]+' } { for (i=1; i<=NF; i++) words[tolower($i)]++ } END { for (i in words) print i, words[i] }' test.txt
Om du har problem med ett-liner-kodavsnittet, kopiera följande kod till en ny fil och kör den med källan.
$ cat > frequency.awk BEGIN { FS='[^a-zA-Z]+' } { for (i=1; i<=NF; i++) words[tolower($i)]++ } END { for (i in words) print i, words[i] }
Kör den sedan med -f alternativ.
$ awk -f frequency.awk test.txt
28. Byt namn på filer med AWK
Kommandot awk kan användas för att byta namn på alla filer som matchar vissa kriterier. Följande kommando illustrerar hur du använder awk för att döpa om alla .MP3 -filer i en katalog till .mp3 -filer.
$ touch {a,b,c,d,e}.MP3 $ ls *.MP3 | awk '{ printf('mv '%s' '%s' ',Hem A-Z-kommandon 40 Praktiskt och användbart awk -kommando i Linux och BSD FörbiMehedi Hasan IA-Z-kommandonUtvalda 1271 7 , tolower(INNEHÅLL
- Förstå AWK -program
- Praktiska exempel på awk Command i Linux
- 1. Skriv ut specifika fält från textutmatning
- 2. Skriv ut flera fält från textutmatning
- 3. Använd BEGIN -uttalanden
- 4. Använd SLUT -uttalanden
- 5. Sök med hjälp av mönster
- 6. Extrahera information från filer
- 7. Läs AWK -skript från källfilen
- 8. Ställ in inmatningsfältet
- 9. Skriv ut information baserat på skick
- 10. Skriv ut information genom att jämföra vanliga uttryck
- 11. Räkna det totala antalet rader i inmatning
- 12. Ställ in utmatningsfältavskiljare
- 13. Använda If Construct
- 14. Använda If-Else Constructs
- 15. Ställ in fältbredden
- 16. Ställ in inspelningsseparatorn
- 17. Utskriftsmiljövariabler
- 18. Utelämna vissa fält från utdata
- 19. Ta bort tomma linjer
- 20. Ta bort släpande blanksteg
- 21. Kontrollera antalet fält i varje rad
- 22. Verifiera aktuellt filnamn
- 23. Verifiera antalet bearbetade poster
- 24. Skriv ut det totala antalet tecken i en post
- 25. Skriv ut alla rader längre än en angiven längd
- 26. Skriv ut antalet rader, tecken och ord
- 27. Beräkna ordfrekvens
- 28. Byt namn på filer med AWK
- 29. Skriv ut ett fyrkantigt rot av ett nummer
- 30. Skriv ut logaritmen för ett tal
- 31. Skriv ut ett tals exponential
- 32. Generera slumpmässiga nummer med AWK
- 33. Färgkompilatorvarningar i rött
- 34. Skriv ut UUID -informationen för filsystemet
- 35. Skriv ut Linux Kernel Image Version
- 36. Lägg till radnummer före rader
- 37. Skriv ut en fil efter att innehållet har sorterats
- 38. Skriv ut den manuella sidan
- 39. Skriv ut hjälpsidan
- 40. Skriv ut versioninformation
- Avslutande tankar
AWK är ett kraftfullt> fullfjädrat programmeringsspråk . AWK får sitt namn från initialerna till dess författare - Aho, Weinberger och Kernighan. Awk -kommandot i Linux och andra Unix -system åberopar tolken som kör AWK -skript. Flera implementeringar av awk finns i de senaste systemen som bland annat gawk (GNU awk), mawk (Minimal awk) och nawk (New awk). Kolla in exemplen nedan om du vill behärska awk.
Förstå AWK -program
Program skrivna i awk består av regler, som helt enkelt är ett par mönster och handlingar. Mönstren är grupperade i en tandställning {}, och åtgärdsdelen utlöses när awk hittar texter som matchar mönstret. Även om awk utvecklades för att skriva enliners, kan erfarna användare enkelt skriva komplexa skript med det.
AWK-program är mycket användbara för storskalig filbehandling. Det identifierar textfält med specialtecken och separatorer. Det erbjuder också programmeringskonstruktioner på hög nivå som arrays och loopar. Så att skriva robusta program med vanlig awk är mycket genomförbart.
Praktiska exempel på awk Command i Linux
Administratörer använder normalt awk för datautvinning och rapportering tillsammans med andra typer av filmanipulationer. Nedan har vi diskuterat awk mer detaljerat. Följ kommandona noga och prova dem i din terminal för en fullständig förståelse.
1. Skriv ut specifika fält från textutmatning
Mest mycket använda Linux -kommandon visa sin produktion med olika fält. Normalt använder vi Linux cut -kommandot för att extrahera ett specifikt fält från sådana data. Kommandot nedan visar dig dock hur du gör detta med kommandot awk.
$ who | awk '{print $1}'Detta kommando visar bara det första fältet från utdata från who -kommandot. Så du får helt enkelt användarnamnen för alla loggade användare. Här, $ 1 representerar det första fältet. Du måste använda $ N om du vill extrahera det n: e fältet.
2. Skriv ut flera fält från textutmatning
Awk -tolken gör att vi kan skriva ut hur många fält som helst. Nedanstående exempel visar hur vi extraherar de två första fälten från utdata från who -kommandot.
$ who | awk '{print $1, $2}'Du kan också styra ordningen på utdatafälten. Följande exempel visar först den andra kolumnen som produceras av who -kommandot och sedan den första kolumnen i det andra fältet.
$ who | awk '{print $2, $1}'Lämna bara fältparametrarna ( $ N ) för att visa hela data.
3. Använd BEGIN -uttalanden
BEGIN -satsen tillåter användare att skriva ut viss känd information i utdata. Det används vanligtvis för att formatera utdata som genereras av awk. Syntaxen för detta uttalande visas nedan.
BEGIN { Actions} {ACTION}De åtgärder som bildar BEGIN -sektionen utlöses alltid. Sedan läser awk de återstående raderna en efter en och ser om något behöver göras.
$ who | awk 'BEGIN {print 'User From'} {print $1, $2}'Kommandot ovan kommer att märka de två utmatningsfälten som extraheras från who -kommandot.
4. Använd SLUT -uttalanden
Du kan också använda END -satsen för att se till att vissa åtgärder alltid utförs i slutet av din operation. Placera helt enkelt END -sektionen efter huvuduppsättningen.
$ who | awk 'BEGIN {print 'User From'} {print $1, $2} END {print '--COMPLETED--'}'Kommandot ovan kommer att lägga till den givna strängen i slutet av utdata.
5. Sök med hjälp av mönster
En stor del av awks arbete innebär mönstermatchning och regex. Som vi redan har diskuterat, söker awk efter mönster i varje inmatningsrad och utför bara åtgärden när en matchning utlöses. Våra tidigare regler bestod av endast handlingar. Nedan har vi illustrerat grunderna för mönstermatchning med hjälp av kommandot awk i Linux.
$ who | awk '/mary/ {print}'Detta kommando kommer att se om användaren mary för närvarande är inloggad eller inte. Det kommer att mata ut hela raden om någon matchning hittas.
6. Extrahera information från filer
Kommandot awk fungerar mycket bra med filer och kan användas för komplexa filbehandlingsuppgifter. Följande kommando illustrerar hur awk hanterar filer.
$ awk '/hello/ {print}' /usr/share/dict/american-englishDetta kommando söker efter mönstret 'hej' i den amerikansk-engelska ordlistfilen. Den finns på de flesta Linux-baserade distributioner . Således kan du enkelt prova awk -program på den här filen.
7. Läs AWK -skript från källfilen
Även om det är användbart att skriva enlinjeprogram, kan du också skriva stora program med awk helt. Du vill spara dem och köra ditt program med hjälp av källfilen.
$ awk -f script-file $ awk --file script-fileDe -f eller -fil alternativet låter oss ange programfilen. Du behöver dock inte använda citattecken (‘‘) inuti skriptfilen eftersom Linux-skalet inte tolkar programkoden på detta sätt.
8. Ställ in inmatningsfältet
En fältavskiljare är en avgränsare som delar inmatningsposten. Vi kan enkelt ange fältavskiljare att awk med hjälp av -F eller –Fältavskiljare alternativ. Kolla in kommandona nedan för att se hur detta fungerar.
$ echo 'This-is-a-simple-example' | awk -F - ' {print $1} ' $ echo 'This-is-a-simple-example' | awk --field-separator - ' {print $1} 'Det fungerar på samma sätt när man använder skriptfiler snarare än ett-linjers awk-kommando i Linux.
9. Skriv ut information baserat på skick
Vi har diskuterat kommandot Linux cut i en tidigare guide. Nu visar vi dig hur du extraherar information med hjälp av awk endast när vissa kriterier matchas. Vi kommer att använda samma testfil som vi använde i den guiden. Så gå dit och gör en kopia av test.txt fil.
$ awk '$4 > 50' test.txtDetta kommando kommer att skriva ut alla nationer från filen test.txt, som har mer än 50 miljoner invånare.
10. Skriv ut information genom att jämföra vanliga uttryck
Följande awk -kommando kontrollerar om det tredje fältet på en rad innehåller mönstret 'Lira' och skriver ut hela raden om en matchning hittas. Vi använder igen filen test.txt som används för att illustrera Linux cut -kommando . Så se till att du har den här filen innan du fortsätter.
$ awk '$3 ~ /Lira/' test.txtDu kan välja att bara skriva ut en viss del av en matchning om du vill.
11. Räkna det totala antalet rader i inmatning
Kommandot awk har många specialvariabler som gör att vi enkelt kan göra många avancerade saker. En sådan variabel är NR, som innehåller det aktuella radnumret.
$ awk 'END {print NR} ' test.txtDetta kommando kommer att mata ut hur många rader som finns i vår test.txt -fil. Den upprepas först över varje rad, och när den har nått END kommer den att skriva ut värdet på NR - som innehåller det totala antalet rader i det här fallet.
12. Ställ in utmatningsfältavskiljare
Tidigare har vi visat hur man väljer inmatningsfältavskiljare med -F eller –Fältavskiljare alternativ. Kommandot awk låter oss också ange utmatningsfältavskiljaren. Nedanstående exempel visar detta med hjälp av ett praktiskt exempel.
$ date | awk 'OFS='-' {print$2,$3,$6}'Detta kommando skriver ut det aktuella datumet med formatet dd-mm-åå. Kör datumprogrammet utan awk för att se hur standardutmatningen ser ut.
13. Använda If Construct
Som andra populära programmeringsspråk , awk ger också användare if-else-konstruktionerna. If -satsen i awk har syntaxen nedan.
if (expression) { first_action second_action }Motsvarande åtgärder utförs endast om det villkorliga uttrycket är sant. Nedanstående exempel visar detta med hjälp av vår referensfil test.txt .
$ awk '{ if ($4>100) print }' test.txtDu behöver inte behålla indragningen strikt.
14. Använda If-Else Constructs
Du kan konstruera användbara if-else-stegar med syntaxen nedan. De är användbara vid utformning av komplexa awk -skript som hanterar dynamisk data.
if (expression) first_action else second_action$ awk '{ if ($4>100) print; else print }' test.txtKommandot ovan kommer att skriva ut hela referensfilen eftersom det fjärde fältet inte är större än 100 för varje rad.
15. Ställ in fältbredden
Ibland är inmatningsdatan ganska rörig, och användare kan ha svårt att visualisera dem i sina rapporter. Lyckligtvis ger awk en kraftfull inbyggd variabel som kallas FIELDWIDTHS som gör att vi kan definiera en blankstegsseparerad lista med bredder.
$ echo 5675784464657 | awk 'BEGIN {FIELDWIDTHS= '3 4 5'} {print $1, $2, $3}'Det är mycket användbart vid analys av spridda data eftersom vi kan styra utmatningsfältets bredd exakt som vi vill.
16. Ställ in inspelningsseparatorn
RS eller Record Separator är en annan inbyggd variabel som gör att vi kan ange hur poster separeras. Låt oss först skapa en fil som visar hur denna awk -variabel fungerar.
$ cat new.txt Melinda James 23 New Hampshire (222) 466-1234 Daniel James 99 Phonenix Road (322) 677-3412$ awk 'BEGIN{FS=' '; RS=''} {print $1,$3}' new.txtDetta kommando kommer att analysera dokumentet och spotta ut namn och adress för de två personerna.
17. Utskriftsmiljövariabler
Kommandot awk i Linux gör att vi enkelt kan skriva ut miljövariabler med variabeln ENVIRON. Kommandot nedan visar hur du använder detta för att skriva ut innehållet i PATH -variabeln.
$ awk 'BEGIN{ print ENVIRON['PATH'] }'Du kan skriva ut innehållet i alla miljövariabler genom att ersätta ENVIRON -variabelns argument. Kommandot nedan skriver ut värdet på miljövariabeln HEM.
$ awk 'BEGIN{ print ENVIRON['HOME'] }'18. Utelämna vissa fält från utdata
Kommandot awk tillåter oss att utelämna specifika rader från vår produktion. Följande kommando visar detta med hjälp av vår referensfil test.txt .
$ awk -F':' '{$2=''; print}' test.txtDetta kommando kommer att utelämna den andra kolumnen i vår fil, som innehåller huvudstadsnamnet för varje land. Du kan också utelämna mer än ett fält, som visas i nästa kommando.
$ awk -F':' '{$2='';$3='';print}' test.txt19. Ta bort tomma linjer
Ibland kan data innehålla för många tomma rader. Du kan använda kommandot awk för att ta bort tomma rader ganska enkelt. Kolla in nästa kommando för att se hur det fungerar i praktiken.
$ awk '/^[ ]*$/{next}{print}' new.txtVi har tagit bort alla tomma rader från filen new.txt med ett enkelt reguljärt uttryck och en awk inbyggd kallas nästa.
20. Ta bort släpande blanksteg
Utdata från många Linux -kommandon innehåller efterföljande blanksteg. Vi kan använda kommandot awk i Linux för att ta bort sådana blanksteg som mellanslag och flikar. Kolla in kommandot nedan för att se hur du hanterar sådana problem med hjälp av awk.
$ awk '{sub(/[ ]*$/, '');print}' new.txt test.txtLägg till några efterföljande blanksteg i våra referensfiler och verifiera om awk tog bort dem framgångsrikt eller inte. Det gjorde detta framgångsrikt i min maskin.
21. Kontrollera antalet fält i varje rad
Vi kan enkelt kontrollera hur många fält som finns i en rad med hjälp av en enkel awk one-liner. Det finns många sätt att göra detta, men vi kommer att använda några av awks inbyggda variabler för denna uppgift. NR -variabeln ger oss radnumret och NF -variabeln anger antalet fält.
$ awk '{print NR,'-->',NF}' test.txtNu kan vi bekräfta hur många fält det finns per rad i vårt test.txt dokumentera. Eftersom varje rad i den här filen innehåller fem fält är vi säkra på att kommandot fungerar som förväntat.
22. Verifiera aktuellt filnamn
Awk -variabeln FILENAME används för att verifiera det aktuella inmatningsfilnamnet. Vi visar hur detta fungerar med ett enkelt exempel. Det kan dock vara användbart i situationer där filnamnet inte är känt uttryckligen eller om det finns mer än en inmatningsfil.
$ awk '{print FILENAME}' test.txt $ awk '{print FILENAME}' test.txt new.txtKommandona ovan skriver ut filnamnet awk arbetar på varje gång det behandlar en ny rad med inmatningsfiler.
23. Verifiera antalet bearbetade poster
Följande exempel visar hur vi kan verifiera antalet poster som behandlats av kommandot awk. Eftersom ett stort antal Linux -systemadministratörer använder awk för att generera rapporter är det mycket användbart för dem.
$ awk '{print 'Processing Record - ',NR;} END {print ' Total Records Processed:', NR;}' test.txtJag använder ofta detta awk -snutt för att ha en tydlig översikt över mina handlingar. Du kan enkelt justera den för att rymma nya idéer eller handlingar.
24. Skriv ut det totala antalet tecken i en post
Awk -språket ger en praktisk funktion som kallas length () som berättar hur många tecken som finns i en post. Det är mycket användbart i ett antal scenarier. Ta en snabb titt på följande exempel för att se hur detta fungerar.
$ echo 'A random text string...' | awk '{ print length($0); }'$ awk '{ print length($0); }' /etc/passwdKommandot ovan kommer att skriva ut det totala antalet tecken som finns på varje rad i inmatningssträngen eller filen.
25. Skriv ut alla rader längre än en angiven längd
Vi kan lägga till några villkor för kommandot ovan och göra det bara att skriva ut de rader som är större än en fördefinierad längd. Det är användbart när du redan har en uppfattning om längden på en specifik post.
$ echo 'A random text string...' | awk 'length($0) > 10'$ awk '{ length($0) > 5; }' /etc/passwdDu kan kasta in fler alternativ och/eller argument för att justera kommandot baserat på dina krav.
26. Skriv ut antalet rader, tecken och ord
Följande awk -kommando i Linux skriver ut antalet rader, tecken och ord i en given ingång. Den använder NR -variabeln samt grundläggande aritmetik för att utföra denna operation.
$ echo 'This is a input line...' | awk '{ w += NF; c += length + 1 } END { print NR, w, c }'Det visar att det finns 1 rad, 5 ord och exakt 24 tecken i inmatningssträngen.
27. Beräkna ordfrekvens
Vi kan kombinera associativa matriser och for -loop i awk för att beräkna ordfrekvensen för ett dokument. Följande kommando kan verka lite komplext, men det är ganska enkelt när du väl förstår de grundläggande konstruktionerna.
$ awk 'BEGIN {FS='[^a-zA-Z]+' } { for (i=1; i<=NF; i++) words[tolower($i)]++ } END { for (i in words) print i, words[i] }' test.txtOm du har problem med ett-liner-kodavsnittet, kopiera följande kod till en ny fil och kör den med källan.
$ cat > frequency.awk BEGIN { FS='[^a-zA-Z]+' } { for (i=1; i<=NF; i++) words[tolower($i)]++ } END { for (i in words) print i, words[i] }Kör den sedan med -f alternativ.
$ awk -f frequency.awk test.txt28. Byt namn på filer med AWK
Kommandot awk kan användas för att byta namn på alla filer som matchar vissa kriterier. Följande kommando illustrerar hur du använder awk för att döpa om alla .MP3 -filer i en katalog till .mp3 -filer.
$ touch {a,b,c,d,e}.MP3 $ ls *.MP3 | awk '{ printf('mv '%s' '%s' ', $0, tolower($0)) }' $ ls *.MP3 | awk '{ printf('mv '%s' '%s' ', $0, tolower($0)) }' | shFörst skapade vi några demofiler med .MP3 -tillägg. Det andra kommandot visar användaren vad som händer när bytet är lyckat. Slutligen byter det sista kommandot namnoperationen med mv -kommandot i Linux.
29. Skriv ut ett fyrkantigt rot av ett nummer
AWK erbjuder flera inbyggda funktioner för manipulering av siffror. En av dem är funktionen sqrt (). Det är en C-liknande funktion som returnerar kvadratroten för ett givet tal. Ta en snabb titt på nästa exempel för att se hur det fungerar i allmänhet.
$ awk 'BEGIN{ print sqrt(36); print sqrt(0); print sqrt(-16) }'Eftersom du inte kan bestämma kvadratroten för ett negativt tal, kommer utdata att visa ett speciellt nyckelord som heter 'nan' istället för sqrt (-12).
30. Skriv ut logaritmen för ett tal
Awk -funktionsloggen () ger den naturliga logaritmen för ett tal. Det fungerar dock bara med positiva siffror, så var medveten om att validera användarnas inmatning. Annars kan någon bryta dina awk -program och få opålitlig tillgång till systemresurser.
$ awk 'BEGIN{ print log(36); print log(0); print log(-16) }'Du bör se logaritmen 36 och verifiera att logaritmen 0 är oändligt och loggen med ett negativt värde är 'Not a Number' eller nan.
31. Skriv ut ett tals exponential
Den exponentiella os ett tal n ger värdet av e^n. Det används vanligtvis i awk -skript som handlar om stora siffror eller komplex aritmetisk logik. Vi kan generera exponentialen för ett tal med den inbyggda awk-funktionen exp ().
$ awk 'BEGIN{ print exp(30); print log(0); print exp(-16) }'Awk kan dock inte beräkna exponentiell för extremt stora tal. Du bör göra sådana beräkningar med programmeringsspråk på låg nivå som C och mata värdet till dina awk-skript.
32. Generera slumpmässiga nummer med AWK
Vi kan använda kommandot awk i Linux för att generera slumpmässiga nummer. Dessa nummer kommer att ligga i intervallet 0 till 1, men aldrig 0 eller 1. Du kan multiplicera ett fast värde med det resulterande talet för att få ett större slumpmässigt värde.
$ awk 'BEGIN{ print rand(); print rand()*99 }'Rand () -funktionen behöver inget argument. Dessutom är siffrorna som genereras av denna funktion inte exakt slumpmässiga utan snarare pseudoslumpmässiga. Dessutom är det ganska enkelt att förutsäga dessa siffror från körning till körning. Så du bör inte lita på dem för känsliga beräkningar.
33. Färgkompilatorvarningar i rött
Moderna Linux -kompilatorer kommer att kasta varningar om din kod inte upprätthåller språkstandarder eller har fel som inte stoppar programkörningen. Följande awk -kommando kommer att skriva ut varningsraderna som genereras av en kompilator i rött.
$ gcc -Wall main.c |& awk '/: warning:/{print 'x1B[01;31m' $0 'x1B[m';next;}{print}'Detta kommando är användbart om du vill specificera kompilatorvarningar specifikt. Du kan använda detta kommando med valfri kompilator än gcc, bara se till att ändra mönstret /: varning: / för att återspegla just den kompilatorn.
34. Skriv ut UUID -informationen för filsystemet
UUID eller Universellt unik identifierare är ett nummer som kan användas för att identifiera resurser som Linux -filsystemet . Vi kan helt enkelt skriva ut UUID -informationen i vårt filsystem med hjälp av följande Linux awk -kommando.
$ awk '/UUID/ {print $0}' /etc/fstabDetta kommando söker efter texten UUID i /etc/fstab fil med hjälp av awk -mönster. Det returnerar en kommentar från filen som vi inte är intresserade av. Kommandot nedan ser till att vi bara får de rader som börjar med UUID.
$ awk '/^UUID/ {print $1}' /etc/fstabDet begränsar utmatningen till det första fältet. Så vi får bara UUID -numren.
35. Skriv ut Linux Kernel Image Version
Olika Linux -kärnbilder används av olika Linux -distributioner . Vi kan enkelt skriva ut den exakta kärnbild som vårt system bygger på att använda awk. Kolla in följande kommando för att se hur det fungerar i allmänhet.
$ uname -a | awk '{print $3}'Vi har först utfärdat kommandot uname med -till alternativet och skickade sedan dessa data till awk. Sedan har vi extraherat versionsinformationen för kärnbilden med hjälp av awk.
36. Lägg till radnummer före rader
Användare kan stöta på textfiler som inte innehåller radnummer ganska ofta. Lyckligtvis kan du enkelt lägga till radnummer till en fil med hjälp av kommandot awk i Linux. Ta en närmare titt på exemplet nedan för att se hur detta fungerar i verkliga livet.
$ awk '{ print FNR '. ' $0 ;next}{print}' test.txtKommandot ovan lägger till ett radnummer före var och en av raderna i vår test.txt -referensfil. Den använder den inbyggda awk-variabeln FNR för att hantera detta.
37. Skriv ut en fil efter att innehållet har sorterats
Vi kan också använda awk för att skriva ut en sorterad lista över alla rader. Följande kommandon skriver ut namnet på alla länder i vår test.txt i sorterad ordning.
$ awk -F ':' '{ print $1 }' test.txt | sortNästa kommando kommer att skriva ut inloggningsnamnet för alla användare från /etc/passwd fil.
$ awk -F ':' '{ print $1 }' /etc/passwd | sortDu kan enkelt ändra sorteringsordningen genom att ändra sorteringskommandot.
38. Skriv ut den manuella sidan
Den manuella sidan innehåller detaljerad information om kommandot awk tillsammans med alla tillgängliga alternativ. Det är oerhört viktigt för människor som vill behärska awk -kommandot noggrant.
$ man awkOm du vill lära dig komplexa awk -funktioner kommer det här att vara till stor hjälp för dig. Läs den här dokumentationen när du har problem.
39. Skriv ut hjälpsidan
Hjälpsidan innehåller sammanfattad information om alla möjliga kommandoradsargument. Du kan använda hjälpguiden för awk med ett av följande kommandon.
$ awk -h $ awk --helpSe den här sidan om du vill ha en snabb översikt över alla tillgängliga alternativ för awk.
40. Skriv ut versioninformation
Versionsinformationen ger oss information om hur ett program byggs. Versionssidan för awk innehåller information som dess upphovsrätt, sammanställningsverktyg och så vidare. Du kan visa denna information med ett av följande awk -kommandon.
$ awk -V $ awk --versionAvslutande tankar
Kommandot awk i Linux tillåter oss att göra alla möjliga saker, inklusive filbehandling och systemunderhåll. Det ger ett brett utbud av funktioner för att hantera dagliga datoruppgifter ganska enkelt. Våra redaktörer har sammanställt denna guide med 40 användbara awk -kommandon som kan användas för textmanipulering eller administration. Eftersom AWK är ett fullvärdigt programmeringsspråk i sig, finns det flera sätt att göra samma jobb. Så undra inte varför vi gör vissa saker på ett annat sätt. Du kan alltid kurera dina egna recept baserat på din kompetens och erfarenhet. Lämna oss dina tankar, meddela oss om du har några frågor.
Dela med sig Facebook Twitter Pinterest WhatsApp ReddIt Telegram Viber
- Taggar
- Programmeringsverktyg
- Systemverktyg
7 KOMMENTARER
- Ramesh 24 april 2020 klockan 07:48
Vad är bäst sed eller awk?
Svar
- lauhub 6 januari 2021 Kl. 04:41
Båda är bäst:
- sed är användbart för enkla ersättnings-/utgåva -uppgifter och har vissa begränsningar när det gäller att programmera komplexa uppgifter (även om avancerade användare kan göra många saker)
- awk måste vara mer omfattande för enkla uppgifter men gör det möjligt att använda mer komplexa datastrukturer för mer komplex programmering.
Hur som helst, allt beror på dina behov och kunskap om dessa verktyg
Svar- DC 16 juli 2021 Kl. 09:17
Båda är funktionellt olika. sed är begränsad funktionalitet. Normalt används för inline hitta och ersätt strängredigerare.
Svar
awk används för datamanipulering och ger fler programmeringsfunktioner- Ahmed 16 april 2020 Klockan 13:24
Hej,
Svar
Exemplen är bra men det hade varit bättre om du också hade postat utdata efter exempel.
- Rubaiat Hossain 18 april 2020 Klockan 01:28
Tack, Ahmed för att du följer oss. Vi är dock rädda att att lägga till separata bilder för varje kommando kommer att göra guiden extremt lång och därför kan användare som läser detta från små skärmar som telefoner/surfplattor möta oönskad rullningsupplevelse.
Dessutom uppmuntrar vi våra läsare att tweak dessa awk-kommandon i Linux när du är på språng och prova dem från första hand. På så sätt behärskar du dem snabbare.
Svar- Stefan 6 april 2020 klockan 10:54
Utmärkta exempel. Tack för den här
Svar- Karan Grover 2 april 2020 Klockan 17:29
fina okej exempel
SvarLÄMNA ETT SVAR Avbryt svar
Kommentar: Ange din kommentar! Namn:* Ange ditt namn här E -post:* Du har angett en felaktig e -postadress! Ange din e -postadress här Webbplats:Spara mitt namn, mejl och webbplats i den här webbläsaren för nästa gång jag kommenterar.
Senaste posten
Android10 bästa ansiktsbytesappar för Android och iOS -enhet
Windows OSHur man schemalägger Windows 10 för att tömma papperskorgen automatiskt
AndroidDe 10 bästa faktureringsapparna för Android -enheter för att få betalt snabbt
Windows OSDe 10 bästa GPU -riktmärken för din dator
Måste läsas
LinuxHur man installerar och konfigurerar XAMPP på Ubuntu Linux
LinuxUbuntu Communitheme - Ett nytt Ubuntu Community -tema
LinuxHur man installerar programvara från källkoden i ditt Linux -system
LinuxRedNotebook - En modern och gratis dagbok och journalprogramvara för Linux
Relaterade inlägg
Så här installerar och konfigurerar du Cockpit Web Console på Linux System
Hur man installerar och konfigurerar Yii PHP Framework på Ubuntu Linux
Hur man fixar W: Vissa indexfiler kunde inte ladda ner Fel i Ubuntu Linux
Så här installerar och konfigurerar du 1Password på Linux Desktop
Så här installerar du den senaste GNU Nano -textredigeraren på Linux -skrivbordet
Så här installerar du en ny Relic Infrastructure Agent i Linux -systemet
Hem A-Z-kommandon 40 Praktiskt och användbart awk -kommando i Linux och BSD FörbiMehedi Hasan IA-Z-kommandonUtvalda 1271 7 )) }' $ ls *.MP3 | awk '{ printf('mv '%s' '%s' ',INNEHÅLL
- Förstå AWK -program
- Praktiska exempel på awk Command i Linux
- 1. Skriv ut specifika fält från textutmatning
- 2. Skriv ut flera fält från textutmatning
- 3. Använd BEGIN -uttalanden
- 4. Använd SLUT -uttalanden
- 5. Sök med hjälp av mönster
- 6. Extrahera information från filer
- 7. Läs AWK -skript från källfilen
- 8. Ställ in inmatningsfältet
- 9. Skriv ut information baserat på skick
- 10. Skriv ut information genom att jämföra vanliga uttryck
- 11. Räkna det totala antalet rader i inmatning
- 12. Ställ in utmatningsfältavskiljare
- 13. Använda If Construct
- 14. Använda If-Else Constructs
- 15. Ställ in fältbredden
- 16. Ställ in inspelningsseparatorn
- 17. Utskriftsmiljövariabler
- 18. Utelämna vissa fält från utdata
- 19. Ta bort tomma linjer
- 20. Ta bort släpande blanksteg
- 21. Kontrollera antalet fält i varje rad
- 22. Verifiera aktuellt filnamn
- 23. Verifiera antalet bearbetade poster
- 24. Skriv ut det totala antalet tecken i en post
- 25. Skriv ut alla rader längre än en angiven längd
- 26. Skriv ut antalet rader, tecken och ord
- 27. Beräkna ordfrekvens
- 28. Byt namn på filer med AWK
- 29. Skriv ut ett fyrkantigt rot av ett nummer
- 30. Skriv ut logaritmen för ett tal
- 31. Skriv ut ett tals exponential
- 32. Generera slumpmässiga nummer med AWK
- 33. Färgkompilatorvarningar i rött
- 34. Skriv ut UUID -informationen för filsystemet
- 35. Skriv ut Linux Kernel Image Version
- 36. Lägg till radnummer före rader
- 37. Skriv ut en fil efter att innehållet har sorterats
- 38. Skriv ut den manuella sidan
- 39. Skriv ut hjälpsidan
- 40. Skriv ut versioninformation
- Avslutande tankar
AWK är ett kraftfullt> fullfjädrat programmeringsspråk . AWK får sitt namn från initialerna till dess författare - Aho, Weinberger och Kernighan. Awk -kommandot i Linux och andra Unix -system åberopar tolken som kör AWK -skript. Flera implementeringar av awk finns i de senaste systemen som bland annat gawk (GNU awk), mawk (Minimal awk) och nawk (New awk). Kolla in exemplen nedan om du vill behärska awk.
Förstå AWK -program
Program skrivna i awk består av regler, som helt enkelt är ett par mönster och handlingar. Mönstren är grupperade i en tandställning {}, och åtgärdsdelen utlöses när awk hittar texter som matchar mönstret. Även om awk utvecklades för att skriva enliners, kan erfarna användare enkelt skriva komplexa skript med det.
AWK-program är mycket användbara för storskalig filbehandling. Det identifierar textfält med specialtecken och separatorer. Det erbjuder också programmeringskonstruktioner på hög nivå som arrays och loopar. Så att skriva robusta program med vanlig awk är mycket genomförbart.
Praktiska exempel på awk Command i Linux
Administratörer använder normalt awk för datautvinning och rapportering tillsammans med andra typer av filmanipulationer. Nedan har vi diskuterat awk mer detaljerat. Följ kommandona noga och prova dem i din terminal för en fullständig förståelse.
1. Skriv ut specifika fält från textutmatning
Mest mycket använda Linux -kommandon visa sin produktion med olika fält. Normalt använder vi Linux cut -kommandot för att extrahera ett specifikt fält från sådana data. Kommandot nedan visar dig dock hur du gör detta med kommandot awk.
$ who | awk '{print $1}'Detta kommando visar bara det första fältet från utdata från who -kommandot. Så du får helt enkelt användarnamnen för alla loggade användare. Här, $ 1 representerar det första fältet. Du måste använda $ N om du vill extrahera det n: e fältet.
2. Skriv ut flera fält från textutmatning
Awk -tolken gör att vi kan skriva ut hur många fält som helst. Nedanstående exempel visar hur vi extraherar de två första fälten från utdata från who -kommandot.
$ who | awk '{print $1, $2}'Du kan också styra ordningen på utdatafälten. Följande exempel visar först den andra kolumnen som produceras av who -kommandot och sedan den första kolumnen i det andra fältet.
$ who | awk '{print $2, $1}'Lämna bara fältparametrarna ( $ N ) för att visa hela data.
3. Använd BEGIN -uttalanden
BEGIN -satsen tillåter användare att skriva ut viss känd information i utdata. Det används vanligtvis för att formatera utdata som genereras av awk. Syntaxen för detta uttalande visas nedan.
BEGIN { Actions} {ACTION}De åtgärder som bildar BEGIN -sektionen utlöses alltid. Sedan läser awk de återstående raderna en efter en och ser om något behöver göras.
$ who | awk 'BEGIN {print 'User From'} {print $1, $2}'Kommandot ovan kommer att märka de två utmatningsfälten som extraheras från who -kommandot.
4. Använd SLUT -uttalanden
Du kan också använda END -satsen för att se till att vissa åtgärder alltid utförs i slutet av din operation. Placera helt enkelt END -sektionen efter huvuduppsättningen.
$ who | awk 'BEGIN {print 'User From'} {print $1, $2} END {print '--COMPLETED--'}'Kommandot ovan kommer att lägga till den givna strängen i slutet av utdata.
5. Sök med hjälp av mönster
En stor del av awks arbete innebär mönstermatchning och regex. Som vi redan har diskuterat, söker awk efter mönster i varje inmatningsrad och utför bara åtgärden när en matchning utlöses. Våra tidigare regler bestod av endast handlingar. Nedan har vi illustrerat grunderna för mönstermatchning med hjälp av kommandot awk i Linux.
$ who | awk '/mary/ {print}'Detta kommando kommer att se om användaren mary för närvarande är inloggad eller inte. Det kommer att mata ut hela raden om någon matchning hittas.
6. Extrahera information från filer
Kommandot awk fungerar mycket bra med filer och kan användas för komplexa filbehandlingsuppgifter. Följande kommando illustrerar hur awk hanterar filer.
$ awk '/hello/ {print}' /usr/share/dict/american-englishDetta kommando söker efter mönstret 'hej' i den amerikansk-engelska ordlistfilen. Den finns på de flesta Linux-baserade distributioner . Således kan du enkelt prova awk -program på den här filen.
7. Läs AWK -skript från källfilen
Även om det är användbart att skriva enlinjeprogram, kan du också skriva stora program med awk helt. Du vill spara dem och köra ditt program med hjälp av källfilen.
$ awk -f script-file $ awk --file script-fileDe -f eller -fil alternativet låter oss ange programfilen. Du behöver dock inte använda citattecken (‘‘) inuti skriptfilen eftersom Linux-skalet inte tolkar programkoden på detta sätt.
8. Ställ in inmatningsfältet
En fältavskiljare är en avgränsare som delar inmatningsposten. Vi kan enkelt ange fältavskiljare att awk med hjälp av -F eller –Fältavskiljare alternativ. Kolla in kommandona nedan för att se hur detta fungerar.
$ echo 'This-is-a-simple-example' | awk -F - ' {print $1} ' $ echo 'This-is-a-simple-example' | awk --field-separator - ' {print $1} 'Det fungerar på samma sätt när man använder skriptfiler snarare än ett-linjers awk-kommando i Linux.
9. Skriv ut information baserat på skick
Vi har diskuterat kommandot Linux cut i en tidigare guide. Nu visar vi dig hur du extraherar information med hjälp av awk endast när vissa kriterier matchas. Vi kommer att använda samma testfil som vi använde i den guiden. Så gå dit och gör en kopia av test.txt fil.
$ awk '$4 > 50' test.txtDetta kommando kommer att skriva ut alla nationer från filen test.txt, som har mer än 50 miljoner invånare.
10. Skriv ut information genom att jämföra vanliga uttryck
Följande awk -kommando kontrollerar om det tredje fältet på en rad innehåller mönstret 'Lira' och skriver ut hela raden om en matchning hittas. Vi använder igen filen test.txt som används för att illustrera Linux cut -kommando . Så se till att du har den här filen innan du fortsätter.
$ awk '$3 ~ /Lira/' test.txtDu kan välja att bara skriva ut en viss del av en matchning om du vill.
11. Räkna det totala antalet rader i inmatning
Kommandot awk har många specialvariabler som gör att vi enkelt kan göra många avancerade saker. En sådan variabel är NR, som innehåller det aktuella radnumret.
$ awk 'END {print NR} ' test.txtDetta kommando kommer att mata ut hur många rader som finns i vår test.txt -fil. Den upprepas först över varje rad, och när den har nått END kommer den att skriva ut värdet på NR - som innehåller det totala antalet rader i det här fallet.
12. Ställ in utmatningsfältavskiljare
Tidigare har vi visat hur man väljer inmatningsfältavskiljare med -F eller –Fältavskiljare alternativ. Kommandot awk låter oss också ange utmatningsfältavskiljaren. Nedanstående exempel visar detta med hjälp av ett praktiskt exempel.
$ date | awk 'OFS='-' {print$2,$3,$6}'Detta kommando skriver ut det aktuella datumet med formatet dd-mm-åå. Kör datumprogrammet utan awk för att se hur standardutmatningen ser ut.
13. Använda If Construct
Som andra populära programmeringsspråk , awk ger också användare if-else-konstruktionerna. If -satsen i awk har syntaxen nedan.
if (expression) { first_action second_action }Motsvarande åtgärder utförs endast om det villkorliga uttrycket är sant. Nedanstående exempel visar detta med hjälp av vår referensfil test.txt .
$ awk '{ if ($4>100) print }' test.txtDu behöver inte behålla indragningen strikt.
14. Använda If-Else Constructs
Du kan konstruera användbara if-else-stegar med syntaxen nedan. De är användbara vid utformning av komplexa awk -skript som hanterar dynamisk data.
if (expression) first_action else second_action$ awk '{ if ($4>100) print; else print }' test.txtKommandot ovan kommer att skriva ut hela referensfilen eftersom det fjärde fältet inte är större än 100 för varje rad.
15. Ställ in fältbredden
Ibland är inmatningsdatan ganska rörig, och användare kan ha svårt att visualisera dem i sina rapporter. Lyckligtvis ger awk en kraftfull inbyggd variabel som kallas FIELDWIDTHS som gör att vi kan definiera en blankstegsseparerad lista med bredder.
$ echo 5675784464657 | awk 'BEGIN {FIELDWIDTHS= '3 4 5'} {print $1, $2, $3}'Det är mycket användbart vid analys av spridda data eftersom vi kan styra utmatningsfältets bredd exakt som vi vill.
16. Ställ in inspelningsseparatorn
RS eller Record Separator är en annan inbyggd variabel som gör att vi kan ange hur poster separeras. Låt oss först skapa en fil som visar hur denna awk -variabel fungerar.
$ cat new.txt Melinda James 23 New Hampshire (222) 466-1234 Daniel James 99 Phonenix Road (322) 677-3412$ awk 'BEGIN{FS=' '; RS=''} {print $1,$3}' new.txtDetta kommando kommer att analysera dokumentet och spotta ut namn och adress för de två personerna.
17. Utskriftsmiljövariabler
Kommandot awk i Linux gör att vi enkelt kan skriva ut miljövariabler med variabeln ENVIRON. Kommandot nedan visar hur du använder detta för att skriva ut innehållet i PATH -variabeln.
$ awk 'BEGIN{ print ENVIRON['PATH'] }'Du kan skriva ut innehållet i alla miljövariabler genom att ersätta ENVIRON -variabelns argument. Kommandot nedan skriver ut värdet på miljövariabeln HEM.
$ awk 'BEGIN{ print ENVIRON['HOME'] }'18. Utelämna vissa fält från utdata
Kommandot awk tillåter oss att utelämna specifika rader från vår produktion. Följande kommando visar detta med hjälp av vår referensfil test.txt .
$ awk -F':' '{$2=''; print}' test.txtDetta kommando kommer att utelämna den andra kolumnen i vår fil, som innehåller huvudstadsnamnet för varje land. Du kan också utelämna mer än ett fält, som visas i nästa kommando.
$ awk -F':' '{$2='';$3='';print}' test.txt19. Ta bort tomma linjer
Ibland kan data innehålla för många tomma rader. Du kan använda kommandot awk för att ta bort tomma rader ganska enkelt. Kolla in nästa kommando för att se hur det fungerar i praktiken.
$ awk '/^[ ]*$/{next}{print}' new.txtVi har tagit bort alla tomma rader från filen new.txt med ett enkelt reguljärt uttryck och en awk inbyggd kallas nästa.
20. Ta bort släpande blanksteg
Utdata från många Linux -kommandon innehåller efterföljande blanksteg. Vi kan använda kommandot awk i Linux för att ta bort sådana blanksteg som mellanslag och flikar. Kolla in kommandot nedan för att se hur du hanterar sådana problem med hjälp av awk.
$ awk '{sub(/[ ]*$/, '');print}' new.txt test.txtLägg till några efterföljande blanksteg i våra referensfiler och verifiera om awk tog bort dem framgångsrikt eller inte. Det gjorde detta framgångsrikt i min maskin.
21. Kontrollera antalet fält i varje rad
Vi kan enkelt kontrollera hur många fält som finns i en rad med hjälp av en enkel awk one-liner. Det finns många sätt att göra detta, men vi kommer att använda några av awks inbyggda variabler för denna uppgift. NR -variabeln ger oss radnumret och NF -variabeln anger antalet fält.
$ awk '{print NR,'-->',NF}' test.txtNu kan vi bekräfta hur många fält det finns per rad i vårt test.txt dokumentera. Eftersom varje rad i den här filen innehåller fem fält är vi säkra på att kommandot fungerar som förväntat.
22. Verifiera aktuellt filnamn
Awk -variabeln FILENAME används för att verifiera det aktuella inmatningsfilnamnet. Vi visar hur detta fungerar med ett enkelt exempel. Det kan dock vara användbart i situationer där filnamnet inte är känt uttryckligen eller om det finns mer än en inmatningsfil.
$ awk '{print FILENAME}' test.txt $ awk '{print FILENAME}' test.txt new.txtKommandona ovan skriver ut filnamnet awk arbetar på varje gång det behandlar en ny rad med inmatningsfiler.
23. Verifiera antalet bearbetade poster
Följande exempel visar hur vi kan verifiera antalet poster som behandlats av kommandot awk. Eftersom ett stort antal Linux -systemadministratörer använder awk för att generera rapporter är det mycket användbart för dem.
$ awk '{print 'Processing Record - ',NR;} END {print ' Total Records Processed:', NR;}' test.txtJag använder ofta detta awk -snutt för att ha en tydlig översikt över mina handlingar. Du kan enkelt justera den för att rymma nya idéer eller handlingar.
24. Skriv ut det totala antalet tecken i en post
Awk -språket ger en praktisk funktion som kallas length () som berättar hur många tecken som finns i en post. Det är mycket användbart i ett antal scenarier. Ta en snabb titt på följande exempel för att se hur detta fungerar.
$ echo 'A random text string...' | awk '{ print length($0); }'$ awk '{ print length($0); }' /etc/passwdKommandot ovan kommer att skriva ut det totala antalet tecken som finns på varje rad i inmatningssträngen eller filen.
25. Skriv ut alla rader längre än en angiven längd
Vi kan lägga till några villkor för kommandot ovan och göra det bara att skriva ut de rader som är större än en fördefinierad längd. Det är användbart när du redan har en uppfattning om längden på en specifik post.
$ echo 'A random text string...' | awk 'length($0) > 10'$ awk '{ length($0) > 5; }' /etc/passwdDu kan kasta in fler alternativ och/eller argument för att justera kommandot baserat på dina krav.
26. Skriv ut antalet rader, tecken och ord
Följande awk -kommando i Linux skriver ut antalet rader, tecken och ord i en given ingång. Den använder NR -variabeln samt grundläggande aritmetik för att utföra denna operation.
$ echo 'This is a input line...' | awk '{ w += NF; c += length + 1 } END { print NR, w, c }'Det visar att det finns 1 rad, 5 ord och exakt 24 tecken i inmatningssträngen.
27. Beräkna ordfrekvens
Vi kan kombinera associativa matriser och for -loop i awk för att beräkna ordfrekvensen för ett dokument. Följande kommando kan verka lite komplext, men det är ganska enkelt när du väl förstår de grundläggande konstruktionerna.
$ awk 'BEGIN {FS='[^a-zA-Z]+' } { for (i=1; i<=NF; i++) words[tolower($i)]++ } END { for (i in words) print i, words[i] }' test.txtOm du har problem med ett-liner-kodavsnittet, kopiera följande kod till en ny fil och kör den med källan.
$ cat > frequency.awk BEGIN { FS='[^a-zA-Z]+' } { for (i=1; i<=NF; i++) words[tolower($i)]++ } END { for (i in words) print i, words[i] }Kör den sedan med -f alternativ.
$ awk -f frequency.awk test.txt28. Byt namn på filer med AWK
Kommandot awk kan användas för att byta namn på alla filer som matchar vissa kriterier. Följande kommando illustrerar hur du använder awk för att döpa om alla .MP3 -filer i en katalog till .mp3 -filer.
$ touch {a,b,c,d,e}.MP3 $ ls *.MP3 | awk '{ printf('mv '%s' '%s' ', $0, tolower($0)) }' $ ls *.MP3 | awk '{ printf('mv '%s' '%s' ', $0, tolower($0)) }' | shFörst skapade vi några demofiler med .MP3 -tillägg. Det andra kommandot visar användaren vad som händer när bytet är lyckat. Slutligen byter det sista kommandot namnoperationen med mv -kommandot i Linux.
29. Skriv ut ett fyrkantigt rot av ett nummer
AWK erbjuder flera inbyggda funktioner för manipulering av siffror. En av dem är funktionen sqrt (). Det är en C-liknande funktion som returnerar kvadratroten för ett givet tal. Ta en snabb titt på nästa exempel för att se hur det fungerar i allmänhet.
$ awk 'BEGIN{ print sqrt(36); print sqrt(0); print sqrt(-16) }'Eftersom du inte kan bestämma kvadratroten för ett negativt tal, kommer utdata att visa ett speciellt nyckelord som heter 'nan' istället för sqrt (-12).
30. Skriv ut logaritmen för ett tal
Awk -funktionsloggen () ger den naturliga logaritmen för ett tal. Det fungerar dock bara med positiva siffror, så var medveten om att validera användarnas inmatning. Annars kan någon bryta dina awk -program och få opålitlig tillgång till systemresurser.
$ awk 'BEGIN{ print log(36); print log(0); print log(-16) }'Du bör se logaritmen 36 och verifiera att logaritmen 0 är oändligt och loggen med ett negativt värde är 'Not a Number' eller nan.
31. Skriv ut ett tals exponential
Den exponentiella os ett tal n ger värdet av e^n. Det används vanligtvis i awk -skript som handlar om stora siffror eller komplex aritmetisk logik. Vi kan generera exponentialen för ett tal med den inbyggda awk-funktionen exp ().
$ awk 'BEGIN{ print exp(30); print log(0); print exp(-16) }'Awk kan dock inte beräkna exponentiell för extremt stora tal. Du bör göra sådana beräkningar med programmeringsspråk på låg nivå som C och mata värdet till dina awk-skript.
32. Generera slumpmässiga nummer med AWK
Vi kan använda kommandot awk i Linux för att generera slumpmässiga nummer. Dessa nummer kommer att ligga i intervallet 0 till 1, men aldrig 0 eller 1. Du kan multiplicera ett fast värde med det resulterande talet för att få ett större slumpmässigt värde.
$ awk 'BEGIN{ print rand(); print rand()*99 }'Rand () -funktionen behöver inget argument. Dessutom är siffrorna som genereras av denna funktion inte exakt slumpmässiga utan snarare pseudoslumpmässiga. Dessutom är det ganska enkelt att förutsäga dessa siffror från körning till körning. Så du bör inte lita på dem för känsliga beräkningar.
33. Färgkompilatorvarningar i rött
Moderna Linux -kompilatorer kommer att kasta varningar om din kod inte upprätthåller språkstandarder eller har fel som inte stoppar programkörningen. Följande awk -kommando kommer att skriva ut varningsraderna som genereras av en kompilator i rött.
$ gcc -Wall main.c |& awk '/: warning:/{print 'x1B[01;31m' $0 'x1B[m';next;}{print}'Detta kommando är användbart om du vill specificera kompilatorvarningar specifikt. Du kan använda detta kommando med valfri kompilator än gcc, bara se till att ändra mönstret /: varning: / för att återspegla just den kompilatorn.
34. Skriv ut UUID -informationen för filsystemet
UUID eller Universellt unik identifierare är ett nummer som kan användas för att identifiera resurser som Linux -filsystemet . Vi kan helt enkelt skriva ut UUID -informationen i vårt filsystem med hjälp av följande Linux awk -kommando.
$ awk '/UUID/ {print $0}' /etc/fstabDetta kommando söker efter texten UUID i /etc/fstab fil med hjälp av awk -mönster. Det returnerar en kommentar från filen som vi inte är intresserade av. Kommandot nedan ser till att vi bara får de rader som börjar med UUID.
$ awk '/^UUID/ {print $1}' /etc/fstabDet begränsar utmatningen till det första fältet. Så vi får bara UUID -numren.
35. Skriv ut Linux Kernel Image Version
Olika Linux -kärnbilder används av olika Linux -distributioner . Vi kan enkelt skriva ut den exakta kärnbild som vårt system bygger på att använda awk. Kolla in följande kommando för att se hur det fungerar i allmänhet.
$ uname -a | awk '{print $3}'Vi har först utfärdat kommandot uname med -till alternativet och skickade sedan dessa data till awk. Sedan har vi extraherat versionsinformationen för kärnbilden med hjälp av awk.
36. Lägg till radnummer före rader
Användare kan stöta på textfiler som inte innehåller radnummer ganska ofta. Lyckligtvis kan du enkelt lägga till radnummer till en fil med hjälp av kommandot awk i Linux. Ta en närmare titt på exemplet nedan för att se hur detta fungerar i verkliga livet.
$ awk '{ print FNR '. ' $0 ;next}{print}' test.txtKommandot ovan lägger till ett radnummer före var och en av raderna i vår test.txt -referensfil. Den använder den inbyggda awk-variabeln FNR för att hantera detta.
37. Skriv ut en fil efter att innehållet har sorterats
Vi kan också använda awk för att skriva ut en sorterad lista över alla rader. Följande kommandon skriver ut namnet på alla länder i vår test.txt i sorterad ordning.
$ awk -F ':' '{ print $1 }' test.txt | sortNästa kommando kommer att skriva ut inloggningsnamnet för alla användare från /etc/passwd fil.
$ awk -F ':' '{ print $1 }' /etc/passwd | sortDu kan enkelt ändra sorteringsordningen genom att ändra sorteringskommandot.
38. Skriv ut den manuella sidan
Den manuella sidan innehåller detaljerad information om kommandot awk tillsammans med alla tillgängliga alternativ. Det är oerhört viktigt för människor som vill behärska awk -kommandot noggrant.
$ man awkOm du vill lära dig komplexa awk -funktioner kommer det här att vara till stor hjälp för dig. Läs den här dokumentationen när du har problem.
39. Skriv ut hjälpsidan
Hjälpsidan innehåller sammanfattad information om alla möjliga kommandoradsargument. Du kan använda hjälpguiden för awk med ett av följande kommandon.
$ awk -h $ awk --helpSe den här sidan om du vill ha en snabb översikt över alla tillgängliga alternativ för awk.
40. Skriv ut versioninformation
Versionsinformationen ger oss information om hur ett program byggs. Versionssidan för awk innehåller information som dess upphovsrätt, sammanställningsverktyg och så vidare. Du kan visa denna information med ett av följande awk -kommandon.
$ awk -V $ awk --versionAvslutande tankar
Kommandot awk i Linux tillåter oss att göra alla möjliga saker, inklusive filbehandling och systemunderhåll. Det ger ett brett utbud av funktioner för att hantera dagliga datoruppgifter ganska enkelt. Våra redaktörer har sammanställt denna guide med 40 användbara awk -kommandon som kan användas för textmanipulering eller administration. Eftersom AWK är ett fullvärdigt programmeringsspråk i sig, finns det flera sätt att göra samma jobb. Så undra inte varför vi gör vissa saker på ett annat sätt. Du kan alltid kurera dina egna recept baserat på din kompetens och erfarenhet. Lämna oss dina tankar, meddela oss om du har några frågor.
Dela med sig Facebook Twitter Pinterest WhatsApp ReddIt Telegram Viber
- Taggar
- Programmeringsverktyg
- Systemverktyg
7 KOMMENTARER
- Ramesh 24 april 2020 klockan 07:48
Vad är bäst sed eller awk?
Svar
- lauhub 6 januari 2021 Kl. 04:41
Båda är bäst:
- sed är användbart för enkla ersättnings-/utgåva -uppgifter och har vissa begränsningar när det gäller att programmera komplexa uppgifter (även om avancerade användare kan göra många saker)
- awk måste vara mer omfattande för enkla uppgifter men gör det möjligt att använda mer komplexa datastrukturer för mer komplex programmering.
Hur som helst, allt beror på dina behov och kunskap om dessa verktyg
Svar- DC 16 juli 2021 Kl. 09:17
Båda är funktionellt olika. sed är begränsad funktionalitet. Normalt används för inline hitta och ersätt strängredigerare.
Svar
awk används för datamanipulering och ger fler programmeringsfunktioner- Ahmed 16 april 2020 Klockan 13:24
Hej,
Svar
Exemplen är bra men det hade varit bättre om du också hade postat utdata efter exempel.
- Rubaiat Hossain 18 april 2020 Klockan 01:28
Tack, Ahmed för att du följer oss. Vi är dock rädda att att lägga till separata bilder för varje kommando kommer att göra guiden extremt lång och därför kan användare som läser detta från små skärmar som telefoner/surfplattor möta oönskad rullningsupplevelse.
Dessutom uppmuntrar vi våra läsare att tweak dessa awk-kommandon i Linux när du är på språng och prova dem från första hand. På så sätt behärskar du dem snabbare.
Svar- Stefan 6 april 2020 klockan 10:54
Utmärkta exempel. Tack för den här
Svar- Karan Grover 2 april 2020 Klockan 17:29
fina okej exempel
SvarLÄMNA ETT SVAR Avbryt svar
Kommentar: Ange din kommentar! Namn:* Ange ditt namn här E -post:* Du har angett en felaktig e -postadress! Ange din e -postadress här Webbplats:Spara mitt namn, mejl och webbplats i den här webbläsaren för nästa gång jag kommenterar.
Senaste posten
Android10 bästa ansiktsbytesappar för Android och iOS -enhet
Windows OSHur man schemalägger Windows 10 för att tömma papperskorgen automatiskt
AndroidDe 10 bästa faktureringsapparna för Android -enheter för att få betalt snabbt
Windows OSDe 10 bästa GPU -riktmärken för din dator
Måste läsas
LinuxHur man installerar och konfigurerar XAMPP på Ubuntu Linux
LinuxUbuntu Communitheme - Ett nytt Ubuntu Community -tema
LinuxHur man installerar programvara från källkoden i ditt Linux -system
LinuxRedNotebook - En modern och gratis dagbok och journalprogramvara för Linux
Relaterade inlägg
Så här installerar och konfigurerar du Cockpit Web Console på Linux System
Hur man installerar och konfigurerar Yii PHP Framework på Ubuntu Linux
Hur man fixar W: Vissa indexfiler kunde inte ladda ner Fel i Ubuntu Linux
Så här installerar och konfigurerar du 1Password på Linux Desktop
Så här installerar du den senaste GNU Nano -textredigeraren på Linux -skrivbordet
Så här installerar du en ny Relic Infrastructure Agent i Linux -systemet
Hem A-Z-kommandon 40 Praktiskt och användbart awk -kommando i Linux och BSD FörbiMehedi Hasan IA-Z-kommandonUtvalda 1271 7 , tolower(INNEHÅLL
- Förstå AWK -program
- Praktiska exempel på awk Command i Linux
- 1. Skriv ut specifika fält från textutmatning
- 2. Skriv ut flera fält från textutmatning
- 3. Använd BEGIN -uttalanden
- 4. Använd SLUT -uttalanden
- 5. Sök med hjälp av mönster
- 6. Extrahera information från filer
- 7. Läs AWK -skript från källfilen
- 8. Ställ in inmatningsfältet
- 9. Skriv ut information baserat på skick
- 10. Skriv ut information genom att jämföra vanliga uttryck
- 11. Räkna det totala antalet rader i inmatning
- 12. Ställ in utmatningsfältavskiljare
- 13. Använda If Construct
- 14. Använda If-Else Constructs
- 15. Ställ in fältbredden
- 16. Ställ in inspelningsseparatorn
- 17. Utskriftsmiljövariabler
- 18. Utelämna vissa fält från utdata
- 19. Ta bort tomma linjer
- 20. Ta bort släpande blanksteg
- 21. Kontrollera antalet fält i varje rad
- 22. Verifiera aktuellt filnamn
- 23. Verifiera antalet bearbetade poster
- 24. Skriv ut det totala antalet tecken i en post
- 25. Skriv ut alla rader längre än en angiven längd
- 26. Skriv ut antalet rader, tecken och ord
- 27. Beräkna ordfrekvens
- 28. Byt namn på filer med AWK
- 29. Skriv ut ett fyrkantigt rot av ett nummer
- 30. Skriv ut logaritmen för ett tal
- 31. Skriv ut ett tals exponential
- 32. Generera slumpmässiga nummer med AWK
- 33. Färgkompilatorvarningar i rött
- 34. Skriv ut UUID -informationen för filsystemet
- 35. Skriv ut Linux Kernel Image Version
- 36. Lägg till radnummer före rader
- 37. Skriv ut en fil efter att innehållet har sorterats
- 38. Skriv ut den manuella sidan
- 39. Skriv ut hjälpsidan
- 40. Skriv ut versioninformation
- Avslutande tankar
AWK är ett kraftfullt> fullfjädrat programmeringsspråk . AWK får sitt namn från initialerna till dess författare - Aho, Weinberger och Kernighan. Awk -kommandot i Linux och andra Unix -system åberopar tolken som kör AWK -skript. Flera implementeringar av awk finns i de senaste systemen som bland annat gawk (GNU awk), mawk (Minimal awk) och nawk (New awk). Kolla in exemplen nedan om du vill behärska awk.
Förstå AWK -program
Program skrivna i awk består av regler, som helt enkelt är ett par mönster och handlingar. Mönstren är grupperade i en tandställning {}, och åtgärdsdelen utlöses när awk hittar texter som matchar mönstret. Även om awk utvecklades för att skriva enliners, kan erfarna användare enkelt skriva komplexa skript med det.
AWK-program är mycket användbara för storskalig filbehandling. Det identifierar textfält med specialtecken och separatorer. Det erbjuder också programmeringskonstruktioner på hög nivå som arrays och loopar. Så att skriva robusta program med vanlig awk är mycket genomförbart.
Praktiska exempel på awk Command i Linux
Administratörer använder normalt awk för datautvinning och rapportering tillsammans med andra typer av filmanipulationer. Nedan har vi diskuterat awk mer detaljerat. Följ kommandona noga och prova dem i din terminal för en fullständig förståelse.
1. Skriv ut specifika fält från textutmatning
Mest mycket använda Linux -kommandon visa sin produktion med olika fält. Normalt använder vi Linux cut -kommandot för att extrahera ett specifikt fält från sådana data. Kommandot nedan visar dig dock hur du gör detta med kommandot awk.
$ who | awk '{print $1}'Detta kommando visar bara det första fältet från utdata från who -kommandot. Så du får helt enkelt användarnamnen för alla loggade användare. Här, $ 1 representerar det första fältet. Du måste använda $ N om du vill extrahera det n: e fältet.
2. Skriv ut flera fält från textutmatning
Awk -tolken gör att vi kan skriva ut hur många fält som helst. Nedanstående exempel visar hur vi extraherar de två första fälten från utdata från who -kommandot.
$ who | awk '{print $1, $2}'Du kan också styra ordningen på utdatafälten. Följande exempel visar först den andra kolumnen som produceras av who -kommandot och sedan den första kolumnen i det andra fältet.
$ who | awk '{print $2, $1}'Lämna bara fältparametrarna ( $ N ) för att visa hela data.
3. Använd BEGIN -uttalanden
BEGIN -satsen tillåter användare att skriva ut viss känd information i utdata. Det används vanligtvis för att formatera utdata som genereras av awk. Syntaxen för detta uttalande visas nedan.
BEGIN { Actions} {ACTION}De åtgärder som bildar BEGIN -sektionen utlöses alltid. Sedan läser awk de återstående raderna en efter en och ser om något behöver göras.
$ who | awk 'BEGIN {print 'User From'} {print $1, $2}'Kommandot ovan kommer att märka de två utmatningsfälten som extraheras från who -kommandot.
4. Använd SLUT -uttalanden
Du kan också använda END -satsen för att se till att vissa åtgärder alltid utförs i slutet av din operation. Placera helt enkelt END -sektionen efter huvuduppsättningen.
$ who | awk 'BEGIN {print 'User From'} {print $1, $2} END {print '--COMPLETED--'}'Kommandot ovan kommer att lägga till den givna strängen i slutet av utdata.
5. Sök med hjälp av mönster
En stor del av awks arbete innebär mönstermatchning och regex. Som vi redan har diskuterat, söker awk efter mönster i varje inmatningsrad och utför bara åtgärden när en matchning utlöses. Våra tidigare regler bestod av endast handlingar. Nedan har vi illustrerat grunderna för mönstermatchning med hjälp av kommandot awk i Linux.
$ who | awk '/mary/ {print}'Detta kommando kommer att se om användaren mary för närvarande är inloggad eller inte. Det kommer att mata ut hela raden om någon matchning hittas.
6. Extrahera information från filer
Kommandot awk fungerar mycket bra med filer och kan användas för komplexa filbehandlingsuppgifter. Följande kommando illustrerar hur awk hanterar filer.
$ awk '/hello/ {print}' /usr/share/dict/american-englishDetta kommando söker efter mönstret 'hej' i den amerikansk-engelska ordlistfilen. Den finns på de flesta Linux-baserade distributioner . Således kan du enkelt prova awk -program på den här filen.
7. Läs AWK -skript från källfilen
Även om det är användbart att skriva enlinjeprogram, kan du också skriva stora program med awk helt. Du vill spara dem och köra ditt program med hjälp av källfilen.
$ awk -f script-file $ awk --file script-fileDe -f eller -fil alternativet låter oss ange programfilen. Du behöver dock inte använda citattecken (‘‘) inuti skriptfilen eftersom Linux-skalet inte tolkar programkoden på detta sätt.
8. Ställ in inmatningsfältet
En fältavskiljare är en avgränsare som delar inmatningsposten. Vi kan enkelt ange fältavskiljare att awk med hjälp av -F eller –Fältavskiljare alternativ. Kolla in kommandona nedan för att se hur detta fungerar.
$ echo 'This-is-a-simple-example' | awk -F - ' {print $1} ' $ echo 'This-is-a-simple-example' | awk --field-separator - ' {print $1} 'Det fungerar på samma sätt när man använder skriptfiler snarare än ett-linjers awk-kommando i Linux.
9. Skriv ut information baserat på skick
Vi har diskuterat kommandot Linux cut i en tidigare guide. Nu visar vi dig hur du extraherar information med hjälp av awk endast när vissa kriterier matchas. Vi kommer att använda samma testfil som vi använde i den guiden. Så gå dit och gör en kopia av test.txt fil.
$ awk '$4 > 50' test.txtDetta kommando kommer att skriva ut alla nationer från filen test.txt, som har mer än 50 miljoner invånare.
10. Skriv ut information genom att jämföra vanliga uttryck
Följande awk -kommando kontrollerar om det tredje fältet på en rad innehåller mönstret 'Lira' och skriver ut hela raden om en matchning hittas. Vi använder igen filen test.txt som används för att illustrera Linux cut -kommando . Så se till att du har den här filen innan du fortsätter.
$ awk '$3 ~ /Lira/' test.txtDu kan välja att bara skriva ut en viss del av en matchning om du vill.
11. Räkna det totala antalet rader i inmatning
Kommandot awk har många specialvariabler som gör att vi enkelt kan göra många avancerade saker. En sådan variabel är NR, som innehåller det aktuella radnumret.
$ awk 'END {print NR} ' test.txtDetta kommando kommer att mata ut hur många rader som finns i vår test.txt -fil. Den upprepas först över varje rad, och när den har nått END kommer den att skriva ut värdet på NR - som innehåller det totala antalet rader i det här fallet.
12. Ställ in utmatningsfältavskiljare
Tidigare har vi visat hur man väljer inmatningsfältavskiljare med -F eller –Fältavskiljare alternativ. Kommandot awk låter oss också ange utmatningsfältavskiljaren. Nedanstående exempel visar detta med hjälp av ett praktiskt exempel.
$ date | awk 'OFS='-' {print$2,$3,$6}'Detta kommando skriver ut det aktuella datumet med formatet dd-mm-åå. Kör datumprogrammet utan awk för att se hur standardutmatningen ser ut.
13. Använda If Construct
Som andra populära programmeringsspråk , awk ger också användare if-else-konstruktionerna. If -satsen i awk har syntaxen nedan.
if (expression) { first_action second_action }Motsvarande åtgärder utförs endast om det villkorliga uttrycket är sant. Nedanstående exempel visar detta med hjälp av vår referensfil test.txt .
$ awk '{ if ($4>100) print }' test.txtDu behöver inte behålla indragningen strikt.
14. Använda If-Else Constructs
Du kan konstruera användbara if-else-stegar med syntaxen nedan. De är användbara vid utformning av komplexa awk -skript som hanterar dynamisk data.
if (expression) first_action else second_action$ awk '{ if ($4>100) print; else print }' test.txtKommandot ovan kommer att skriva ut hela referensfilen eftersom det fjärde fältet inte är större än 100 för varje rad.
15. Ställ in fältbredden
Ibland är inmatningsdatan ganska rörig, och användare kan ha svårt att visualisera dem i sina rapporter. Lyckligtvis ger awk en kraftfull inbyggd variabel som kallas FIELDWIDTHS som gör att vi kan definiera en blankstegsseparerad lista med bredder.
$ echo 5675784464657 | awk 'BEGIN {FIELDWIDTHS= '3 4 5'} {print $1, $2, $3}'Det är mycket användbart vid analys av spridda data eftersom vi kan styra utmatningsfältets bredd exakt som vi vill.
16. Ställ in inspelningsseparatorn
RS eller Record Separator är en annan inbyggd variabel som gör att vi kan ange hur poster separeras. Låt oss först skapa en fil som visar hur denna awk -variabel fungerar.
$ cat new.txt Melinda James 23 New Hampshire (222) 466-1234 Daniel James 99 Phonenix Road (322) 677-3412$ awk 'BEGIN{FS=' '; RS=''} {print $1,$3}' new.txtDetta kommando kommer att analysera dokumentet och spotta ut namn och adress för de två personerna.
17. Utskriftsmiljövariabler
Kommandot awk i Linux gör att vi enkelt kan skriva ut miljövariabler med variabeln ENVIRON. Kommandot nedan visar hur du använder detta för att skriva ut innehållet i PATH -variabeln.
$ awk 'BEGIN{ print ENVIRON['PATH'] }'Du kan skriva ut innehållet i alla miljövariabler genom att ersätta ENVIRON -variabelns argument. Kommandot nedan skriver ut värdet på miljövariabeln HEM.
$ awk 'BEGIN{ print ENVIRON['HOME'] }'18. Utelämna vissa fält från utdata
Kommandot awk tillåter oss att utelämna specifika rader från vår produktion. Följande kommando visar detta med hjälp av vår referensfil test.txt .
$ awk -F':' '{$2=''; print}' test.txtDetta kommando kommer att utelämna den andra kolumnen i vår fil, som innehåller huvudstadsnamnet för varje land. Du kan också utelämna mer än ett fält, som visas i nästa kommando.
$ awk -F':' '{$2='';$3='';print}' test.txt19. Ta bort tomma linjer
Ibland kan data innehålla för många tomma rader. Du kan använda kommandot awk för att ta bort tomma rader ganska enkelt. Kolla in nästa kommando för att se hur det fungerar i praktiken.
$ awk '/^[ ]*$/{next}{print}' new.txtVi har tagit bort alla tomma rader från filen new.txt med ett enkelt reguljärt uttryck och en awk inbyggd kallas nästa.
20. Ta bort släpande blanksteg
Utdata från många Linux -kommandon innehåller efterföljande blanksteg. Vi kan använda kommandot awk i Linux för att ta bort sådana blanksteg som mellanslag och flikar. Kolla in kommandot nedan för att se hur du hanterar sådana problem med hjälp av awk.
$ awk '{sub(/[ ]*$/, '');print}' new.txt test.txtLägg till några efterföljande blanksteg i våra referensfiler och verifiera om awk tog bort dem framgångsrikt eller inte. Det gjorde detta framgångsrikt i min maskin.
21. Kontrollera antalet fält i varje rad
Vi kan enkelt kontrollera hur många fält som finns i en rad med hjälp av en enkel awk one-liner. Det finns många sätt att göra detta, men vi kommer att använda några av awks inbyggda variabler för denna uppgift. NR -variabeln ger oss radnumret och NF -variabeln anger antalet fält.
$ awk '{print NR,'-->',NF}' test.txtNu kan vi bekräfta hur många fält det finns per rad i vårt test.txt dokumentera. Eftersom varje rad i den här filen innehåller fem fält är vi säkra på att kommandot fungerar som förväntat.
22. Verifiera aktuellt filnamn
Awk -variabeln FILENAME används för att verifiera det aktuella inmatningsfilnamnet. Vi visar hur detta fungerar med ett enkelt exempel. Det kan dock vara användbart i situationer där filnamnet inte är känt uttryckligen eller om det finns mer än en inmatningsfil.
$ awk '{print FILENAME}' test.txt $ awk '{print FILENAME}' test.txt new.txtKommandona ovan skriver ut filnamnet awk arbetar på varje gång det behandlar en ny rad med inmatningsfiler.
23. Verifiera antalet bearbetade poster
Följande exempel visar hur vi kan verifiera antalet poster som behandlats av kommandot awk. Eftersom ett stort antal Linux -systemadministratörer använder awk för att generera rapporter är det mycket användbart för dem.
$ awk '{print 'Processing Record - ',NR;} END {print ' Total Records Processed:', NR;}' test.txtJag använder ofta detta awk -snutt för att ha en tydlig översikt över mina handlingar. Du kan enkelt justera den för att rymma nya idéer eller handlingar.
24. Skriv ut det totala antalet tecken i en post
Awk -språket ger en praktisk funktion som kallas length () som berättar hur många tecken som finns i en post. Det är mycket användbart i ett antal scenarier. Ta en snabb titt på följande exempel för att se hur detta fungerar.
$ echo 'A random text string...' | awk '{ print length($0); }'$ awk '{ print length($0); }' /etc/passwdKommandot ovan kommer att skriva ut det totala antalet tecken som finns på varje rad i inmatningssträngen eller filen.
25. Skriv ut alla rader längre än en angiven längd
Vi kan lägga till några villkor för kommandot ovan och göra det bara att skriva ut de rader som är större än en fördefinierad längd. Det är användbart när du redan har en uppfattning om längden på en specifik post.
$ echo 'A random text string...' | awk 'length($0) > 10'$ awk '{ length($0) > 5; }' /etc/passwdDu kan kasta in fler alternativ och/eller argument för att justera kommandot baserat på dina krav.
26. Skriv ut antalet rader, tecken och ord
Följande awk -kommando i Linux skriver ut antalet rader, tecken och ord i en given ingång. Den använder NR -variabeln samt grundläggande aritmetik för att utföra denna operation.
$ echo 'This is a input line...' | awk '{ w += NF; c += length + 1 } END { print NR, w, c }'Det visar att det finns 1 rad, 5 ord och exakt 24 tecken i inmatningssträngen.
27. Beräkna ordfrekvens
Vi kan kombinera associativa matriser och for -loop i awk för att beräkna ordfrekvensen för ett dokument. Följande kommando kan verka lite komplext, men det är ganska enkelt när du väl förstår de grundläggande konstruktionerna.
$ awk 'BEGIN {FS='[^a-zA-Z]+' } { for (i=1; i<=NF; i++) words[tolower($i)]++ } END { for (i in words) print i, words[i] }' test.txtOm du har problem med ett-liner-kodavsnittet, kopiera följande kod till en ny fil och kör den med källan.
$ cat > frequency.awk BEGIN { FS='[^a-zA-Z]+' } { for (i=1; i<=NF; i++) words[tolower($i)]++ } END { for (i in words) print i, words[i] }Kör den sedan med -f alternativ.
$ awk -f frequency.awk test.txt28. Byt namn på filer med AWK
Kommandot awk kan användas för att byta namn på alla filer som matchar vissa kriterier. Följande kommando illustrerar hur du använder awk för att döpa om alla .MP3 -filer i en katalog till .mp3 -filer.
$ touch {a,b,c,d,e}.MP3 $ ls *.MP3 | awk '{ printf('mv '%s' '%s' ', $0, tolower($0)) }' $ ls *.MP3 | awk '{ printf('mv '%s' '%s' ', $0, tolower($0)) }' | shFörst skapade vi några demofiler med .MP3 -tillägg. Det andra kommandot visar användaren vad som händer när bytet är lyckat. Slutligen byter det sista kommandot namnoperationen med mv -kommandot i Linux.
29. Skriv ut ett fyrkantigt rot av ett nummer
AWK erbjuder flera inbyggda funktioner för manipulering av siffror. En av dem är funktionen sqrt (). Det är en C-liknande funktion som returnerar kvadratroten för ett givet tal. Ta en snabb titt på nästa exempel för att se hur det fungerar i allmänhet.
$ awk 'BEGIN{ print sqrt(36); print sqrt(0); print sqrt(-16) }'Eftersom du inte kan bestämma kvadratroten för ett negativt tal, kommer utdata att visa ett speciellt nyckelord som heter 'nan' istället för sqrt (-12).
30. Skriv ut logaritmen för ett tal
Awk -funktionsloggen () ger den naturliga logaritmen för ett tal. Det fungerar dock bara med positiva siffror, så var medveten om att validera användarnas inmatning. Annars kan någon bryta dina awk -program och få opålitlig tillgång till systemresurser.
$ awk 'BEGIN{ print log(36); print log(0); print log(-16) }'Du bör se logaritmen 36 och verifiera att logaritmen 0 är oändligt och loggen med ett negativt värde är 'Not a Number' eller nan.
31. Skriv ut ett tals exponential
Den exponentiella os ett tal n ger värdet av e^n. Det används vanligtvis i awk -skript som handlar om stora siffror eller komplex aritmetisk logik. Vi kan generera exponentialen för ett tal med den inbyggda awk-funktionen exp ().
$ awk 'BEGIN{ print exp(30); print log(0); print exp(-16) }'Awk kan dock inte beräkna exponentiell för extremt stora tal. Du bör göra sådana beräkningar med programmeringsspråk på låg nivå som C och mata värdet till dina awk-skript.
32. Generera slumpmässiga nummer med AWK
Vi kan använda kommandot awk i Linux för att generera slumpmässiga nummer. Dessa nummer kommer att ligga i intervallet 0 till 1, men aldrig 0 eller 1. Du kan multiplicera ett fast värde med det resulterande talet för att få ett större slumpmässigt värde.
$ awk 'BEGIN{ print rand(); print rand()*99 }'Rand () -funktionen behöver inget argument. Dessutom är siffrorna som genereras av denna funktion inte exakt slumpmässiga utan snarare pseudoslumpmässiga. Dessutom är det ganska enkelt att förutsäga dessa siffror från körning till körning. Så du bör inte lita på dem för känsliga beräkningar.
33. Färgkompilatorvarningar i rött
Moderna Linux -kompilatorer kommer att kasta varningar om din kod inte upprätthåller språkstandarder eller har fel som inte stoppar programkörningen. Följande awk -kommando kommer att skriva ut varningsraderna som genereras av en kompilator i rött.
$ gcc -Wall main.c |& awk '/: warning:/{print 'x1B[01;31m' $0 'x1B[m';next;}{print}'Detta kommando är användbart om du vill specificera kompilatorvarningar specifikt. Du kan använda detta kommando med valfri kompilator än gcc, bara se till att ändra mönstret /: varning: / för att återspegla just den kompilatorn.
34. Skriv ut UUID -informationen för filsystemet
UUID eller Universellt unik identifierare är ett nummer som kan användas för att identifiera resurser som Linux -filsystemet . Vi kan helt enkelt skriva ut UUID -informationen i vårt filsystem med hjälp av följande Linux awk -kommando.
$ awk '/UUID/ {print $0}' /etc/fstabDetta kommando söker efter texten UUID i /etc/fstab fil med hjälp av awk -mönster. Det returnerar en kommentar från filen som vi inte är intresserade av. Kommandot nedan ser till att vi bara får de rader som börjar med UUID.
$ awk '/^UUID/ {print $1}' /etc/fstabDet begränsar utmatningen till det första fältet. Så vi får bara UUID -numren.
35. Skriv ut Linux Kernel Image Version
Olika Linux -kärnbilder används av olika Linux -distributioner . Vi kan enkelt skriva ut den exakta kärnbild som vårt system bygger på att använda awk. Kolla in följande kommando för att se hur det fungerar i allmänhet.
$ uname -a | awk '{print $3}'Vi har först utfärdat kommandot uname med -till alternativet och skickade sedan dessa data till awk. Sedan har vi extraherat versionsinformationen för kärnbilden med hjälp av awk.
36. Lägg till radnummer före rader
Användare kan stöta på textfiler som inte innehåller radnummer ganska ofta. Lyckligtvis kan du enkelt lägga till radnummer till en fil med hjälp av kommandot awk i Linux. Ta en närmare titt på exemplet nedan för att se hur detta fungerar i verkliga livet.
$ awk '{ print FNR '. ' $0 ;next}{print}' test.txtKommandot ovan lägger till ett radnummer före var och en av raderna i vår test.txt -referensfil. Den använder den inbyggda awk-variabeln FNR för att hantera detta.
37. Skriv ut en fil efter att innehållet har sorterats
Vi kan också använda awk för att skriva ut en sorterad lista över alla rader. Följande kommandon skriver ut namnet på alla länder i vår test.txt i sorterad ordning.
$ awk -F ':' '{ print $1 }' test.txt | sortNästa kommando kommer att skriva ut inloggningsnamnet för alla användare från /etc/passwd fil.
$ awk -F ':' '{ print $1 }' /etc/passwd | sortDu kan enkelt ändra sorteringsordningen genom att ändra sorteringskommandot.
38. Skriv ut den manuella sidan
Den manuella sidan innehåller detaljerad information om kommandot awk tillsammans med alla tillgängliga alternativ. Det är oerhört viktigt för människor som vill behärska awk -kommandot noggrant.
$ man awkOm du vill lära dig komplexa awk -funktioner kommer det här att vara till stor hjälp för dig. Läs den här dokumentationen när du har problem.
39. Skriv ut hjälpsidan
Hjälpsidan innehåller sammanfattad information om alla möjliga kommandoradsargument. Du kan använda hjälpguiden för awk med ett av följande kommandon.
$ awk -h $ awk --helpSe den här sidan om du vill ha en snabb översikt över alla tillgängliga alternativ för awk.
40. Skriv ut versioninformation
Versionsinformationen ger oss information om hur ett program byggs. Versionssidan för awk innehåller information som dess upphovsrätt, sammanställningsverktyg och så vidare. Du kan visa denna information med ett av följande awk -kommandon.
$ awk -V $ awk --versionAvslutande tankar
Kommandot awk i Linux tillåter oss att göra alla möjliga saker, inklusive filbehandling och systemunderhåll. Det ger ett brett utbud av funktioner för att hantera dagliga datoruppgifter ganska enkelt. Våra redaktörer har sammanställt denna guide med 40 användbara awk -kommandon som kan användas för textmanipulering eller administration. Eftersom AWK är ett fullvärdigt programmeringsspråk i sig, finns det flera sätt att göra samma jobb. Så undra inte varför vi gör vissa saker på ett annat sätt. Du kan alltid kurera dina egna recept baserat på din kompetens och erfarenhet. Lämna oss dina tankar, meddela oss om du har några frågor.
Dela med sig Facebook Twitter Pinterest WhatsApp ReddIt Telegram Viber
- Taggar
- Programmeringsverktyg
- Systemverktyg
7 KOMMENTARER
- Ramesh 24 april 2020 klockan 07:48
Vad är bäst sed eller awk?
Svar
- lauhub 6 januari 2021 Kl. 04:41
Båda är bäst:
- sed är användbart för enkla ersättnings-/utgåva -uppgifter och har vissa begränsningar när det gäller att programmera komplexa uppgifter (även om avancerade användare kan göra många saker)
- awk måste vara mer omfattande för enkla uppgifter men gör det möjligt att använda mer komplexa datastrukturer för mer komplex programmering.
Hur som helst, allt beror på dina behov och kunskap om dessa verktyg
Svar- DC 16 juli 2021 Kl. 09:17
Båda är funktionellt olika. sed är begränsad funktionalitet. Normalt används för inline hitta och ersätt strängredigerare.
Svar
awk används för datamanipulering och ger fler programmeringsfunktioner- Ahmed 16 april 2020 Klockan 13:24
Hej,
Svar
Exemplen är bra men det hade varit bättre om du också hade postat utdata efter exempel.
- Rubaiat Hossain 18 april 2020 Klockan 01:28
Tack, Ahmed för att du följer oss. Vi är dock rädda att att lägga till separata bilder för varje kommando kommer att göra guiden extremt lång och därför kan användare som läser detta från små skärmar som telefoner/surfplattor möta oönskad rullningsupplevelse.
Dessutom uppmuntrar vi våra läsare att tweak dessa awk-kommandon i Linux när du är på språng och prova dem från första hand. På så sätt behärskar du dem snabbare.
Svar- Stefan 6 april 2020 klockan 10:54
Utmärkta exempel. Tack för den här
Svar- Karan Grover 2 april 2020 Klockan 17:29
fina okej exempel
SvarLÄMNA ETT SVAR Avbryt svar
Kommentar: Ange din kommentar! Namn:* Ange ditt namn här E -post:* Du har angett en felaktig e -postadress! Ange din e -postadress här Webbplats:Spara mitt namn, mejl och webbplats i den här webbläsaren för nästa gång jag kommenterar.
Senaste posten
Android10 bästa ansiktsbytesappar för Android och iOS -enhet
Windows OSHur man schemalägger Windows 10 för att tömma papperskorgen automatiskt
AndroidDe 10 bästa faktureringsapparna för Android -enheter för att få betalt snabbt
Windows OSDe 10 bästa GPU -riktmärken för din dator
Måste läsas
LinuxHur man installerar och konfigurerar XAMPP på Ubuntu Linux
LinuxUbuntu Communitheme - Ett nytt Ubuntu Community -tema
LinuxHur man installerar programvara från källkoden i ditt Linux -system
LinuxRedNotebook - En modern och gratis dagbok och journalprogramvara för Linux
Relaterade inlägg
Så här installerar och konfigurerar du Cockpit Web Console på Linux System
Hur man installerar och konfigurerar Yii PHP Framework på Ubuntu Linux
Hur man fixar W: Vissa indexfiler kunde inte ladda ner Fel i Ubuntu Linux
Så här installerar och konfigurerar du 1Password på Linux Desktop
Så här installerar du den senaste GNU Nano -textredigeraren på Linux -skrivbordet
Så här installerar du en ny Relic Infrastructure Agent i Linux -systemet
Hem A-Z-kommandon 40 Praktiskt och användbart awk -kommando i Linux och BSD FörbiMehedi Hasan IA-Z-kommandonUtvalda 1271 7 )) }' | shINNEHÅLL
- Förstå AWK -program
- Praktiska exempel på awk Command i Linux
- 1. Skriv ut specifika fält från textutmatning
- 2. Skriv ut flera fält från textutmatning
- 3. Använd BEGIN -uttalanden
- 4. Använd SLUT -uttalanden
- 5. Sök med hjälp av mönster
- 6. Extrahera information från filer
- 7. Läs AWK -skript från källfilen
- 8. Ställ in inmatningsfältet
- 9. Skriv ut information baserat på skick
- 10. Skriv ut information genom att jämföra vanliga uttryck
- 11. Räkna det totala antalet rader i inmatning
- 12. Ställ in utmatningsfältavskiljare
- 13. Använda If Construct
- 14. Använda If-Else Constructs
- 15. Ställ in fältbredden
- 16. Ställ in inspelningsseparatorn
- 17. Utskriftsmiljövariabler
- 18. Utelämna vissa fält från utdata
- 19. Ta bort tomma linjer
- 20. Ta bort släpande blanksteg
- 21. Kontrollera antalet fält i varje rad
- 22. Verifiera aktuellt filnamn
- 23. Verifiera antalet bearbetade poster
- 24. Skriv ut det totala antalet tecken i en post
- 25. Skriv ut alla rader längre än en angiven längd
- 26. Skriv ut antalet rader, tecken och ord
- 27. Beräkna ordfrekvens
- 28. Byt namn på filer med AWK
- 29. Skriv ut ett fyrkantigt rot av ett nummer
- 30. Skriv ut logaritmen för ett tal
- 31. Skriv ut ett tals exponential
- 32. Generera slumpmässiga nummer med AWK
- 33. Färgkompilatorvarningar i rött
- 34. Skriv ut UUID -informationen för filsystemet
- 35. Skriv ut Linux Kernel Image Version
- 36. Lägg till radnummer före rader
- 37. Skriv ut en fil efter att innehållet har sorterats
- 38. Skriv ut den manuella sidan
- 39. Skriv ut hjälpsidan
- 40. Skriv ut versioninformation
- Avslutande tankar
AWK är ett kraftfullt> fullfjädrat programmeringsspråk . AWK får sitt namn från initialerna till dess författare - Aho, Weinberger och Kernighan. Awk -kommandot i Linux och andra Unix -system åberopar tolken som kör AWK -skript. Flera implementeringar av awk finns i de senaste systemen som bland annat gawk (GNU awk), mawk (Minimal awk) och nawk (New awk). Kolla in exemplen nedan om du vill behärska awk.
Förstå AWK -program
Program skrivna i awk består av regler, som helt enkelt är ett par mönster och handlingar. Mönstren är grupperade i en tandställning {}, och åtgärdsdelen utlöses när awk hittar texter som matchar mönstret. Även om awk utvecklades för att skriva enliners, kan erfarna användare enkelt skriva komplexa skript med det.
AWK-program är mycket användbara för storskalig filbehandling. Det identifierar textfält med specialtecken och separatorer. Det erbjuder också programmeringskonstruktioner på hög nivå som arrays och loopar. Så att skriva robusta program med vanlig awk är mycket genomförbart.
Praktiska exempel på awk Command i Linux
Administratörer använder normalt awk för datautvinning och rapportering tillsammans med andra typer av filmanipulationer. Nedan har vi diskuterat awk mer detaljerat. Följ kommandona noga och prova dem i din terminal för en fullständig förståelse.
1. Skriv ut specifika fält från textutmatning
Mest mycket använda Linux -kommandon visa sin produktion med olika fält. Normalt använder vi Linux cut -kommandot för att extrahera ett specifikt fält från sådana data. Kommandot nedan visar dig dock hur du gör detta med kommandot awk.
$ who | awk '{print $1}'Detta kommando visar bara det första fältet från utdata från who -kommandot. Så du får helt enkelt användarnamnen för alla loggade användare. Här, $ 1 representerar det första fältet. Du måste använda $ N om du vill extrahera det n: e fältet.
2. Skriv ut flera fält från textutmatning
Awk -tolken gör att vi kan skriva ut hur många fält som helst. Nedanstående exempel visar hur vi extraherar de två första fälten från utdata från who -kommandot.
$ who | awk '{print $1, $2}'Du kan också styra ordningen på utdatafälten. Följande exempel visar först den andra kolumnen som produceras av who -kommandot och sedan den första kolumnen i det andra fältet.
$ who | awk '{print $2, $1}'Lämna bara fältparametrarna ( $ N ) för att visa hela data.
3. Använd BEGIN -uttalanden
BEGIN -satsen tillåter användare att skriva ut viss känd information i utdata. Det används vanligtvis för att formatera utdata som genereras av awk. Syntaxen för detta uttalande visas nedan.
BEGIN { Actions} {ACTION}De åtgärder som bildar BEGIN -sektionen utlöses alltid. Sedan läser awk de återstående raderna en efter en och ser om något behöver göras.
$ who | awk 'BEGIN {print 'User From'} {print $1, $2}'Kommandot ovan kommer att märka de två utmatningsfälten som extraheras från who -kommandot.
4. Använd SLUT -uttalanden
Du kan också använda END -satsen för att se till att vissa åtgärder alltid utförs i slutet av din operation. Placera helt enkelt END -sektionen efter huvuduppsättningen.
$ who | awk 'BEGIN {print 'User From'} {print $1, $2} END {print '--COMPLETED--'}'Kommandot ovan kommer att lägga till den givna strängen i slutet av utdata.
5. Sök med hjälp av mönster
En stor del av awks arbete innebär mönstermatchning och regex. Som vi redan har diskuterat, söker awk efter mönster i varje inmatningsrad och utför bara åtgärden när en matchning utlöses. Våra tidigare regler bestod av endast handlingar. Nedan har vi illustrerat grunderna för mönstermatchning med hjälp av kommandot awk i Linux.
$ who | awk '/mary/ {print}'Detta kommando kommer att se om användaren mary för närvarande är inloggad eller inte. Det kommer att mata ut hela raden om någon matchning hittas.
6. Extrahera information från filer
Kommandot awk fungerar mycket bra med filer och kan användas för komplexa filbehandlingsuppgifter. Följande kommando illustrerar hur awk hanterar filer.
$ awk '/hello/ {print}' /usr/share/dict/american-englishDetta kommando söker efter mönstret 'hej' i den amerikansk-engelska ordlistfilen. Den finns på de flesta Linux-baserade distributioner . Således kan du enkelt prova awk -program på den här filen.
7. Läs AWK -skript från källfilen
Även om det är användbart att skriva enlinjeprogram, kan du också skriva stora program med awk helt. Du vill spara dem och köra ditt program med hjälp av källfilen.
$ awk -f script-file $ awk --file script-fileDe -f eller -fil alternativet låter oss ange programfilen. Du behöver dock inte använda citattecken (‘‘) inuti skriptfilen eftersom Linux-skalet inte tolkar programkoden på detta sätt.
8. Ställ in inmatningsfältet
En fältavskiljare är en avgränsare som delar inmatningsposten. Vi kan enkelt ange fältavskiljare att awk med hjälp av -F eller –Fältavskiljare alternativ. Kolla in kommandona nedan för att se hur detta fungerar.
$ echo 'This-is-a-simple-example' | awk -F - ' {print $1} ' $ echo 'This-is-a-simple-example' | awk --field-separator - ' {print $1} 'Det fungerar på samma sätt när man använder skriptfiler snarare än ett-linjers awk-kommando i Linux.
9. Skriv ut information baserat på skick
Vi har diskuterat kommandot Linux cut i en tidigare guide. Nu visar vi dig hur du extraherar information med hjälp av awk endast när vissa kriterier matchas. Vi kommer att använda samma testfil som vi använde i den guiden. Så gå dit och gör en kopia av test.txt fil.
$ awk '$4 > 50' test.txtDetta kommando kommer att skriva ut alla nationer från filen test.txt, som har mer än 50 miljoner invånare.
10. Skriv ut information genom att jämföra vanliga uttryck
Följande awk -kommando kontrollerar om det tredje fältet på en rad innehåller mönstret 'Lira' och skriver ut hela raden om en matchning hittas. Vi använder igen filen test.txt som används för att illustrera Linux cut -kommando . Så se till att du har den här filen innan du fortsätter.
$ awk '$3 ~ /Lira/' test.txtDu kan välja att bara skriva ut en viss del av en matchning om du vill.
11. Räkna det totala antalet rader i inmatning
Kommandot awk har många specialvariabler som gör att vi enkelt kan göra många avancerade saker. En sådan variabel är NR, som innehåller det aktuella radnumret.
$ awk 'END {print NR} ' test.txtDetta kommando kommer att mata ut hur många rader som finns i vår test.txt -fil. Den upprepas först över varje rad, och när den har nått END kommer den att skriva ut värdet på NR - som innehåller det totala antalet rader i det här fallet.
12. Ställ in utmatningsfältavskiljare
Tidigare har vi visat hur man väljer inmatningsfältavskiljare med -F eller –Fältavskiljare alternativ. Kommandot awk låter oss också ange utmatningsfältavskiljaren. Nedanstående exempel visar detta med hjälp av ett praktiskt exempel.
$ date | awk 'OFS='-' {print$2,$3,$6}'Detta kommando skriver ut det aktuella datumet med formatet dd-mm-åå. Kör datumprogrammet utan awk för att se hur standardutmatningen ser ut.
13. Använda If Construct
Som andra populära programmeringsspråk , awk ger också användare if-else-konstruktionerna. If -satsen i awk har syntaxen nedan.
if (expression) { first_action second_action }Motsvarande åtgärder utförs endast om det villkorliga uttrycket är sant. Nedanstående exempel visar detta med hjälp av vår referensfil test.txt .
$ awk '{ if ($4>100) print }' test.txtDu behöver inte behålla indragningen strikt.
14. Använda If-Else Constructs
Du kan konstruera användbara if-else-stegar med syntaxen nedan. De är användbara vid utformning av komplexa awk -skript som hanterar dynamisk data.
if (expression) first_action else second_action$ awk '{ if ($4>100) print; else print }' test.txtKommandot ovan kommer att skriva ut hela referensfilen eftersom det fjärde fältet inte är större än 100 för varje rad.
15. Ställ in fältbredden
Ibland är inmatningsdatan ganska rörig, och användare kan ha svårt att visualisera dem i sina rapporter. Lyckligtvis ger awk en kraftfull inbyggd variabel som kallas FIELDWIDTHS som gör att vi kan definiera en blankstegsseparerad lista med bredder.
$ echo 5675784464657 | awk 'BEGIN {FIELDWIDTHS= '3 4 5'} {print $1, $2, $3}'Det är mycket användbart vid analys av spridda data eftersom vi kan styra utmatningsfältets bredd exakt som vi vill.
16. Ställ in inspelningsseparatorn
RS eller Record Separator är en annan inbyggd variabel som gör att vi kan ange hur poster separeras. Låt oss först skapa en fil som visar hur denna awk -variabel fungerar.
$ cat new.txt Melinda James 23 New Hampshire (222) 466-1234 Daniel James 99 Phonenix Road (322) 677-3412$ awk 'BEGIN{FS=' '; RS=''} {print $1,$3}' new.txtDetta kommando kommer att analysera dokumentet och spotta ut namn och adress för de två personerna.
17. Utskriftsmiljövariabler
Kommandot awk i Linux gör att vi enkelt kan skriva ut miljövariabler med variabeln ENVIRON. Kommandot nedan visar hur du använder detta för att skriva ut innehållet i PATH -variabeln.
$ awk 'BEGIN{ print ENVIRON['PATH'] }'Du kan skriva ut innehållet i alla miljövariabler genom att ersätta ENVIRON -variabelns argument. Kommandot nedan skriver ut värdet på miljövariabeln HEM.
$ awk 'BEGIN{ print ENVIRON['HOME'] }'18. Utelämna vissa fält från utdata
Kommandot awk tillåter oss att utelämna specifika rader från vår produktion. Följande kommando visar detta med hjälp av vår referensfil test.txt .
$ awk -F':' '{$2=''; print}' test.txtDetta kommando kommer att utelämna den andra kolumnen i vår fil, som innehåller huvudstadsnamnet för varje land. Du kan också utelämna mer än ett fält, som visas i nästa kommando.
$ awk -F':' '{$2='';$3='';print}' test.txt19. Ta bort tomma linjer
Ibland kan data innehålla för många tomma rader. Du kan använda kommandot awk för att ta bort tomma rader ganska enkelt. Kolla in nästa kommando för att se hur det fungerar i praktiken.
$ awk '/^[ ]*$/{next}{print}' new.txtVi har tagit bort alla tomma rader från filen new.txt med ett enkelt reguljärt uttryck och en awk inbyggd kallas nästa.
20. Ta bort släpande blanksteg
Utdata från många Linux -kommandon innehåller efterföljande blanksteg. Vi kan använda kommandot awk i Linux för att ta bort sådana blanksteg som mellanslag och flikar. Kolla in kommandot nedan för att se hur du hanterar sådana problem med hjälp av awk.
$ awk '{sub(/[ ]*$/, '');print}' new.txt test.txtLägg till några efterföljande blanksteg i våra referensfiler och verifiera om awk tog bort dem framgångsrikt eller inte. Det gjorde detta framgångsrikt i min maskin.
21. Kontrollera antalet fält i varje rad
Vi kan enkelt kontrollera hur många fält som finns i en rad med hjälp av en enkel awk one-liner. Det finns många sätt att göra detta, men vi kommer att använda några av awks inbyggda variabler för denna uppgift. NR -variabeln ger oss radnumret och NF -variabeln anger antalet fält.
$ awk '{print NR,'-->',NF}' test.txtNu kan vi bekräfta hur många fält det finns per rad i vårt test.txt dokumentera. Eftersom varje rad i den här filen innehåller fem fält är vi säkra på att kommandot fungerar som förväntat.
22. Verifiera aktuellt filnamn
Awk -variabeln FILENAME används för att verifiera det aktuella inmatningsfilnamnet. Vi visar hur detta fungerar med ett enkelt exempel. Det kan dock vara användbart i situationer där filnamnet inte är känt uttryckligen eller om det finns mer än en inmatningsfil.
$ awk '{print FILENAME}' test.txt $ awk '{print FILENAME}' test.txt new.txtKommandona ovan skriver ut filnamnet awk arbetar på varje gång det behandlar en ny rad med inmatningsfiler.
23. Verifiera antalet bearbetade poster
Följande exempel visar hur vi kan verifiera antalet poster som behandlats av kommandot awk. Eftersom ett stort antal Linux -systemadministratörer använder awk för att generera rapporter är det mycket användbart för dem.
$ awk '{print 'Processing Record - ',NR;} END {print ' Total Records Processed:', NR;}' test.txtJag använder ofta detta awk -snutt för att ha en tydlig översikt över mina handlingar. Du kan enkelt justera den för att rymma nya idéer eller handlingar.
24. Skriv ut det totala antalet tecken i en post
Awk -språket ger en praktisk funktion som kallas length () som berättar hur många tecken som finns i en post. Det är mycket användbart i ett antal scenarier. Ta en snabb titt på följande exempel för att se hur detta fungerar.
$ echo 'A random text string...' | awk '{ print length($0); }'$ awk '{ print length($0); }' /etc/passwdKommandot ovan kommer att skriva ut det totala antalet tecken som finns på varje rad i inmatningssträngen eller filen.
25. Skriv ut alla rader längre än en angiven längd
Vi kan lägga till några villkor för kommandot ovan och göra det bara att skriva ut de rader som är större än en fördefinierad längd. Det är användbart när du redan har en uppfattning om längden på en specifik post.
$ echo 'A random text string...' | awk 'length($0) > 10'$ awk '{ length($0) > 5; }' /etc/passwdDu kan kasta in fler alternativ och/eller argument för att justera kommandot baserat på dina krav.
26. Skriv ut antalet rader, tecken och ord
Följande awk -kommando i Linux skriver ut antalet rader, tecken och ord i en given ingång. Den använder NR -variabeln samt grundläggande aritmetik för att utföra denna operation.
$ echo 'This is a input line...' | awk '{ w += NF; c += length + 1 } END { print NR, w, c }'Det visar att det finns 1 rad, 5 ord och exakt 24 tecken i inmatningssträngen.
27. Beräkna ordfrekvens
Vi kan kombinera associativa matriser och for -loop i awk för att beräkna ordfrekvensen för ett dokument. Följande kommando kan verka lite komplext, men det är ganska enkelt när du väl förstår de grundläggande konstruktionerna.
$ awk 'BEGIN {FS='[^a-zA-Z]+' } { for (i=1; i<=NF; i++) words[tolower($i)]++ } END { for (i in words) print i, words[i] }' test.txtOm du har problem med ett-liner-kodavsnittet, kopiera följande kod till en ny fil och kör den med källan.
$ cat > frequency.awk BEGIN { FS='[^a-zA-Z]+' } { for (i=1; i<=NF; i++) words[tolower($i)]++ } END { for (i in words) print i, words[i] }Kör den sedan med -f alternativ.
$ awk -f frequency.awk test.txt28. Byt namn på filer med AWK
Kommandot awk kan användas för att byta namn på alla filer som matchar vissa kriterier. Följande kommando illustrerar hur du använder awk för att döpa om alla .MP3 -filer i en katalog till .mp3 -filer.
$ touch {a,b,c,d,e}.MP3 $ ls *.MP3 | awk '{ printf('mv '%s' '%s' ', $0, tolower($0)) }' $ ls *.MP3 | awk '{ printf('mv '%s' '%s' ', $0, tolower($0)) }' | shFörst skapade vi några demofiler med .MP3 -tillägg. Det andra kommandot visar användaren vad som händer när bytet är lyckat. Slutligen byter det sista kommandot namnoperationen med mv -kommandot i Linux.
29. Skriv ut ett fyrkantigt rot av ett nummer
AWK erbjuder flera inbyggda funktioner för manipulering av siffror. En av dem är funktionen sqrt (). Det är en C-liknande funktion som returnerar kvadratroten för ett givet tal. Ta en snabb titt på nästa exempel för att se hur det fungerar i allmänhet.
$ awk 'BEGIN{ print sqrt(36); print sqrt(0); print sqrt(-16) }'Eftersom du inte kan bestämma kvadratroten för ett negativt tal, kommer utdata att visa ett speciellt nyckelord som heter 'nan' istället för sqrt (-12).
30. Skriv ut logaritmen för ett tal
Awk -funktionsloggen () ger den naturliga logaritmen för ett tal. Det fungerar dock bara med positiva siffror, så var medveten om att validera användarnas inmatning. Annars kan någon bryta dina awk -program och få opålitlig tillgång till systemresurser.
$ awk 'BEGIN{ print log(36); print log(0); print log(-16) }'Du bör se logaritmen 36 och verifiera att logaritmen 0 är oändligt och loggen med ett negativt värde är 'Not a Number' eller nan.
31. Skriv ut ett tals exponential
Den exponentiella os ett tal n ger värdet av e^n. Det används vanligtvis i awk -skript som handlar om stora siffror eller komplex aritmetisk logik. Vi kan generera exponentialen för ett tal med den inbyggda awk-funktionen exp ().
$ awk 'BEGIN{ print exp(30); print log(0); print exp(-16) }'Awk kan dock inte beräkna exponentiell för extremt stora tal. Du bör göra sådana beräkningar med programmeringsspråk på låg nivå som C och mata värdet till dina awk-skript.
32. Generera slumpmässiga nummer med AWK
Vi kan använda kommandot awk i Linux för att generera slumpmässiga nummer. Dessa nummer kommer att ligga i intervallet 0 till 1, men aldrig 0 eller 1. Du kan multiplicera ett fast värde med det resulterande talet för att få ett större slumpmässigt värde.
$ awk 'BEGIN{ print rand(); print rand()*99 }'Rand () -funktionen behöver inget argument. Dessutom är siffrorna som genereras av denna funktion inte exakt slumpmässiga utan snarare pseudoslumpmässiga. Dessutom är det ganska enkelt att förutsäga dessa siffror från körning till körning. Så du bör inte lita på dem för känsliga beräkningar.
33. Färgkompilatorvarningar i rött
Moderna Linux -kompilatorer kommer att kasta varningar om din kod inte upprätthåller språkstandarder eller har fel som inte stoppar programkörningen. Följande awk -kommando kommer att skriva ut varningsraderna som genereras av en kompilator i rött.
$ gcc -Wall main.c |& awk '/: warning:/{print 'x1B[01;31m' $0 'x1B[m';next;}{print}'Detta kommando är användbart om du vill specificera kompilatorvarningar specifikt. Du kan använda detta kommando med valfri kompilator än gcc, bara se till att ändra mönstret /: varning: / för att återspegla just den kompilatorn.
34. Skriv ut UUID -informationen för filsystemet
UUID eller Universellt unik identifierare är ett nummer som kan användas för att identifiera resurser som Linux -filsystemet . Vi kan helt enkelt skriva ut UUID -informationen i vårt filsystem med hjälp av följande Linux awk -kommando.
$ awk '/UUID/ {print $0}' /etc/fstabDetta kommando söker efter texten UUID i /etc/fstab fil med hjälp av awk -mönster. Det returnerar en kommentar från filen som vi inte är intresserade av. Kommandot nedan ser till att vi bara får de rader som börjar med UUID.
$ awk '/^UUID/ {print $1}' /etc/fstabDet begränsar utmatningen till det första fältet. Så vi får bara UUID -numren.
35. Skriv ut Linux Kernel Image Version
Olika Linux -kärnbilder används av olika Linux -distributioner . Vi kan enkelt skriva ut den exakta kärnbild som vårt system bygger på att använda awk. Kolla in följande kommando för att se hur det fungerar i allmänhet.
$ uname -a | awk '{print $3}'Vi har först utfärdat kommandot uname med -till alternativet och skickade sedan dessa data till awk. Sedan har vi extraherat versionsinformationen för kärnbilden med hjälp av awk.
36. Lägg till radnummer före rader
Användare kan stöta på textfiler som inte innehåller radnummer ganska ofta. Lyckligtvis kan du enkelt lägga till radnummer till en fil med hjälp av kommandot awk i Linux. Ta en närmare titt på exemplet nedan för att se hur detta fungerar i verkliga livet.
$ awk '{ print FNR '. ' $0 ;next}{print}' test.txtKommandot ovan lägger till ett radnummer före var och en av raderna i vår test.txt -referensfil. Den använder den inbyggda awk-variabeln FNR för att hantera detta.
37. Skriv ut en fil efter att innehållet har sorterats
Vi kan också använda awk för att skriva ut en sorterad lista över alla rader. Följande kommandon skriver ut namnet på alla länder i vår test.txt i sorterad ordning.
$ awk -F ':' '{ print $1 }' test.txt | sortNästa kommando kommer att skriva ut inloggningsnamnet för alla användare från /etc/passwd fil.
$ awk -F ':' '{ print $1 }' /etc/passwd | sortDu kan enkelt ändra sorteringsordningen genom att ändra sorteringskommandot.
38. Skriv ut den manuella sidan
Den manuella sidan innehåller detaljerad information om kommandot awk tillsammans med alla tillgängliga alternativ. Det är oerhört viktigt för människor som vill behärska awk -kommandot noggrant.
$ man awkOm du vill lära dig komplexa awk -funktioner kommer det här att vara till stor hjälp för dig. Läs den här dokumentationen när du har problem.
39. Skriv ut hjälpsidan
Hjälpsidan innehåller sammanfattad information om alla möjliga kommandoradsargument. Du kan använda hjälpguiden för awk med ett av följande kommandon.
$ awk -h $ awk --helpSe den här sidan om du vill ha en snabb översikt över alla tillgängliga alternativ för awk.
40. Skriv ut versioninformation
Versionsinformationen ger oss information om hur ett program byggs. Versionssidan för awk innehåller information som dess upphovsrätt, sammanställningsverktyg och så vidare. Du kan visa denna information med ett av följande awk -kommandon.
$ awk -V $ awk --versionAvslutande tankar
Kommandot awk i Linux tillåter oss att göra alla möjliga saker, inklusive filbehandling och systemunderhåll. Det ger ett brett utbud av funktioner för att hantera dagliga datoruppgifter ganska enkelt. Våra redaktörer har sammanställt denna guide med 40 användbara awk -kommandon som kan användas för textmanipulering eller administration. Eftersom AWK är ett fullvärdigt programmeringsspråk i sig, finns det flera sätt att göra samma jobb. Så undra inte varför vi gör vissa saker på ett annat sätt. Du kan alltid kurera dina egna recept baserat på din kompetens och erfarenhet. Lämna oss dina tankar, meddela oss om du har några frågor.
Dela med sig Facebook Twitter Pinterest WhatsApp ReddIt Telegram Viber
- Taggar
- Programmeringsverktyg
- Systemverktyg
7 KOMMENTARER
- Ramesh 24 april 2020 klockan 07:48
Vad är bäst sed eller awk?
Svar
- lauhub 6 januari 2021 Kl. 04:41
Båda är bäst:
- sed är användbart för enkla ersättnings-/utgåva -uppgifter och har vissa begränsningar när det gäller att programmera komplexa uppgifter (även om avancerade användare kan göra många saker)
- awk måste vara mer omfattande för enkla uppgifter men gör det möjligt att använda mer komplexa datastrukturer för mer komplex programmering.
Hur som helst, allt beror på dina behov och kunskap om dessa verktyg
Svar- DC 16 juli 2021 Kl. 09:17
Båda är funktionellt olika. sed är begränsad funktionalitet. Normalt används för inline hitta och ersätt strängredigerare.
Svar
awk används för datamanipulering och ger fler programmeringsfunktioner- Ahmed 16 april 2020 Klockan 13:24
Hej,
Svar
Exemplen är bra men det hade varit bättre om du också hade postat utdata efter exempel.
- Rubaiat Hossain 18 april 2020 Klockan 01:28
Tack, Ahmed för att du följer oss. Vi är dock rädda att att lägga till separata bilder för varje kommando kommer att göra guiden extremt lång och därför kan användare som läser detta från små skärmar som telefoner/surfplattor möta oönskad rullningsupplevelse.
Dessutom uppmuntrar vi våra läsare att tweak dessa awk-kommandon i Linux när du är på språng och prova dem från första hand. På så sätt behärskar du dem snabbare.
Svar- Stefan 6 april 2020 klockan 10:54
Utmärkta exempel. Tack för den här
Svar- Karan Grover 2 april 2020 Klockan 17:29
fina okej exempel
SvarLÄMNA ETT SVAR Avbryt svar
Kommentar: Ange din kommentar! Namn:* Ange ditt namn här E -post:* Du har angett en felaktig e -postadress! Ange din e -postadress här Webbplats:Spara mitt namn, mejl och webbplats i den här webbläsaren för nästa gång jag kommenterar.
Senaste posten
Android10 bästa ansiktsbytesappar för Android och iOS -enhet
Windows OSHur man schemalägger Windows 10 för att tömma papperskorgen automatiskt
AndroidDe 10 bästa faktureringsapparna för Android -enheter för att få betalt snabbt
Windows OSDe 10 bästa GPU -riktmärken för din dator
Måste läsas
LinuxHur man installerar och konfigurerar XAMPP på Ubuntu Linux
LinuxUbuntu Communitheme - Ett nytt Ubuntu Community -tema
LinuxHur man installerar programvara från källkoden i ditt Linux -system
LinuxRedNotebook - En modern och gratis dagbok och journalprogramvara för Linux
Relaterade inlägg
Så här installerar och konfigurerar du Cockpit Web Console på Linux System
Hur man installerar och konfigurerar Yii PHP Framework på Ubuntu Linux
Hur man fixar W: Vissa indexfiler kunde inte ladda ner Fel i Ubuntu Linux
Så här installerar och konfigurerar du 1Password på Linux Desktop
Så här installerar du den senaste GNU Nano -textredigeraren på Linux -skrivbordet
Så här installerar du en ny Relic Infrastructure Agent i Linux -systemet
Först skapade vi några demofiler med .MP3 -tillägg. Det andra kommandot visar användaren vad som händer när bytet är lyckat. Slutligen byter det sista kommandot namnoperationen med mv -kommandot i Linux.
29. Skriv ut ett fyrkantigt rot av ett nummer
AWK erbjuder flera inbyggda funktioner för manipulering av siffror. En av dem är funktionen sqrt (). Det är en C-liknande funktion som returnerar kvadratroten för ett givet tal. Ta en snabb titt på nästa exempel för att se hur det fungerar i allmänhet.
$ awk 'BEGIN{ print sqrt(36); print sqrt(0); print sqrt(-16) }'
Eftersom du inte kan bestämma kvadratroten för ett negativt tal, kommer utdata att visa ett speciellt nyckelord som heter 'nan' istället för sqrt (-12).
30. Skriv ut logaritmen för ett tal
Awk -funktionsloggen () ger den naturliga logaritmen för ett tal. Det fungerar dock bara med positiva siffror, så var medveten om att validera användarnas inmatning. Annars kan någon bryta dina awk -program och få opålitlig tillgång till systemresurser.
$ awk 'BEGIN{ print log(36); print log(0); print log(-16) }'
Du bör se logaritmen 36 och verifiera att logaritmen 0 är oändligt och loggen med ett negativt värde är 'Not a Number' eller nan.
31. Skriv ut ett tals exponential
Den exponentiella os ett tal n ger värdet av e^n. Det används vanligtvis i awk -skript som handlar om stora siffror eller komplex aritmetisk logik. Vi kan generera exponentialen för ett tal med den inbyggda awk-funktionen exp ().
$ awk 'BEGIN{ print exp(30); print log(0); print exp(-16) }'
Awk kan dock inte beräkna exponentiell för extremt stora tal. Du bör göra sådana beräkningar med programmeringsspråk på låg nivå som C och mata värdet till dina awk-skript.
32. Generera slumpmässiga nummer med AWK
Vi kan använda kommandot awk i Linux för att generera slumpmässiga nummer. Dessa nummer kommer att ligga i intervallet 0 till 1, men aldrig 0 eller 1. Du kan multiplicera ett fast värde med det resulterande talet för att få ett större slumpmässigt värde.
$ awk 'BEGIN{ print rand(); print rand()*99 }'
Rand () -funktionen behöver inget argument. Dessutom är siffrorna som genereras av denna funktion inte exakt slumpmässiga utan snarare pseudoslumpmässiga. Dessutom är det ganska enkelt att förutsäga dessa siffror från körning till körning. Så du bör inte lita på dem för känsliga beräkningar.
33. Färgkompilatorvarningar i rött
Moderna Linux -kompilatorer kommer att kasta varningar om din kod inte upprätthåller språkstandarder eller har fel som inte stoppar programkörningen. Följande awk -kommando kommer att skriva ut varningsraderna som genereras av en kompilator i rött.
$ gcc -Wall main.c |& awk '/: warning:/{print 'x1B[01;31m'Hem A-Z-kommandon 40 Praktiskt och användbart awk -kommando i Linux och BSD FörbiMehedi Hasan IA-Z-kommandonUtvalda 1271 7 'x1B[m';next;}{print}'INNEHÅLL
- Förstå AWK -program
- Praktiska exempel på awk Command i Linux
- 1. Skriv ut specifika fält från textutmatning
- 2. Skriv ut flera fält från textutmatning
- 3. Använd BEGIN -uttalanden
- 4. Använd SLUT -uttalanden
- 5. Sök med hjälp av mönster
- 6. Extrahera information från filer
- 7. Läs AWK -skript från källfilen
- 8. Ställ in inmatningsfältet
- 9. Skriv ut information baserat på skick
- 10. Skriv ut information genom att jämföra vanliga uttryck
- 11. Räkna det totala antalet rader i inmatning
- 12. Ställ in utmatningsfältavskiljare
- 13. Använda If Construct
- 14. Använda If-Else Constructs
- 15. Ställ in fältbredden
- 16. Ställ in inspelningsseparatorn
- 17. Utskriftsmiljövariabler
- 18. Utelämna vissa fält från utdata
- 19. Ta bort tomma linjer
- 20. Ta bort släpande blanksteg
- 21. Kontrollera antalet fält i varje rad
- 22. Verifiera aktuellt filnamn
- 23. Verifiera antalet bearbetade poster
- 24. Skriv ut det totala antalet tecken i en post
- 25. Skriv ut alla rader längre än en angiven längd
- 26. Skriv ut antalet rader, tecken och ord
- 27. Beräkna ordfrekvens
- 28. Byt namn på filer med AWK
- 29. Skriv ut ett fyrkantigt rot av ett nummer
- 30. Skriv ut logaritmen för ett tal
- 31. Skriv ut ett tals exponential
- 32. Generera slumpmässiga nummer med AWK
- 33. Färgkompilatorvarningar i rött
- 34. Skriv ut UUID -informationen för filsystemet
- 35. Skriv ut Linux Kernel Image Version
- 36. Lägg till radnummer före rader
- 37. Skriv ut en fil efter att innehållet har sorterats
- 38. Skriv ut den manuella sidan
- 39. Skriv ut hjälpsidan
- 40. Skriv ut versioninformation
- Avslutande tankar
AWK är ett kraftfullt> fullfjädrat programmeringsspråk . AWK får sitt namn från initialerna till dess författare - Aho, Weinberger och Kernighan. Awk -kommandot i Linux och andra Unix -system åberopar tolken som kör AWK -skript. Flera implementeringar av awk finns i de senaste systemen som bland annat gawk (GNU awk), mawk (Minimal awk) och nawk (New awk). Kolla in exemplen nedan om du vill behärska awk.
Förstå AWK -program
Program skrivna i awk består av regler, som helt enkelt är ett par mönster och handlingar. Mönstren är grupperade i en tandställning {}, och åtgärdsdelen utlöses när awk hittar texter som matchar mönstret. Även om awk utvecklades för att skriva enliners, kan erfarna användare enkelt skriva komplexa skript med det.
AWK-program är mycket användbara för storskalig filbehandling. Det identifierar textfält med specialtecken och separatorer. Det erbjuder också programmeringskonstruktioner på hög nivå som arrays och loopar. Så att skriva robusta program med vanlig awk är mycket genomförbart.
Praktiska exempel på awk Command i Linux
Administratörer använder normalt awk för datautvinning och rapportering tillsammans med andra typer av filmanipulationer. Nedan har vi diskuterat awk mer detaljerat. Följ kommandona noga och prova dem i din terminal för en fullständig förståelse.
1. Skriv ut specifika fält från textutmatning
Mest mycket använda Linux -kommandon visa sin produktion med olika fält. Normalt använder vi Linux cut -kommandot för att extrahera ett specifikt fält från sådana data. Kommandot nedan visar dig dock hur du gör detta med kommandot awk.
$ who | awk '{print $1}'Detta kommando visar bara det första fältet från utdata från who -kommandot. Så du får helt enkelt användarnamnen för alla loggade användare. Här, $ 1 representerar det första fältet. Du måste använda $ N om du vill extrahera det n: e fältet.
2. Skriv ut flera fält från textutmatning
Awk -tolken gör att vi kan skriva ut hur många fält som helst. Nedanstående exempel visar hur vi extraherar de två första fälten från utdata från who -kommandot.
$ who | awk '{print $1, $2}'Du kan också styra ordningen på utdatafälten. Följande exempel visar först den andra kolumnen som produceras av who -kommandot och sedan den första kolumnen i det andra fältet.
$ who | awk '{print $2, $1}'Lämna bara fältparametrarna ( $ N ) för att visa hela data.
3. Använd BEGIN -uttalanden
BEGIN -satsen tillåter användare att skriva ut viss känd information i utdata. Det används vanligtvis för att formatera utdata som genereras av awk. Syntaxen för detta uttalande visas nedan.
BEGIN { Actions} {ACTION}De åtgärder som bildar BEGIN -sektionen utlöses alltid. Sedan läser awk de återstående raderna en efter en och ser om något behöver göras.
$ who | awk 'BEGIN {print 'User From'} {print $1, $2}'Kommandot ovan kommer att märka de två utmatningsfälten som extraheras från who -kommandot.
4. Använd SLUT -uttalanden
Du kan också använda END -satsen för att se till att vissa åtgärder alltid utförs i slutet av din operation. Placera helt enkelt END -sektionen efter huvuduppsättningen.
$ who | awk 'BEGIN {print 'User From'} {print $1, $2} END {print '--COMPLETED--'}'Kommandot ovan kommer att lägga till den givna strängen i slutet av utdata.
5. Sök med hjälp av mönster
En stor del av awks arbete innebär mönstermatchning och regex. Som vi redan har diskuterat, söker awk efter mönster i varje inmatningsrad och utför bara åtgärden när en matchning utlöses. Våra tidigare regler bestod av endast handlingar. Nedan har vi illustrerat grunderna för mönstermatchning med hjälp av kommandot awk i Linux.
$ who | awk '/mary/ {print}'Detta kommando kommer att se om användaren mary för närvarande är inloggad eller inte. Det kommer att mata ut hela raden om någon matchning hittas.
6. Extrahera information från filer
Kommandot awk fungerar mycket bra med filer och kan användas för komplexa filbehandlingsuppgifter. Följande kommando illustrerar hur awk hanterar filer.
$ awk '/hello/ {print}' /usr/share/dict/american-englishDetta kommando söker efter mönstret 'hej' i den amerikansk-engelska ordlistfilen. Den finns på de flesta Linux-baserade distributioner . Således kan du enkelt prova awk -program på den här filen.
7. Läs AWK -skript från källfilen
Även om det är användbart att skriva enlinjeprogram, kan du också skriva stora program med awk helt. Du vill spara dem och köra ditt program med hjälp av källfilen.
$ awk -f script-file $ awk --file script-fileDe -f eller -fil alternativet låter oss ange programfilen. Du behöver dock inte använda citattecken (‘‘) inuti skriptfilen eftersom Linux-skalet inte tolkar programkoden på detta sätt.
8. Ställ in inmatningsfältet
En fältavskiljare är en avgränsare som delar inmatningsposten. Vi kan enkelt ange fältavskiljare att awk med hjälp av -F eller –Fältavskiljare alternativ. Kolla in kommandona nedan för att se hur detta fungerar.
$ echo 'This-is-a-simple-example' | awk -F - ' {print $1} ' $ echo 'This-is-a-simple-example' | awk --field-separator - ' {print $1} 'Det fungerar på samma sätt när man använder skriptfiler snarare än ett-linjers awk-kommando i Linux.
9. Skriv ut information baserat på skick
Vi har diskuterat kommandot Linux cut i en tidigare guide. Nu visar vi dig hur du extraherar information med hjälp av awk endast när vissa kriterier matchas. Vi kommer att använda samma testfil som vi använde i den guiden. Så gå dit och gör en kopia av test.txt fil.
$ awk '$4 > 50' test.txtDetta kommando kommer att skriva ut alla nationer från filen test.txt, som har mer än 50 miljoner invånare.
10. Skriv ut information genom att jämföra vanliga uttryck
Följande awk -kommando kontrollerar om det tredje fältet på en rad innehåller mönstret 'Lira' och skriver ut hela raden om en matchning hittas. Vi använder igen filen test.txt som används för att illustrera Linux cut -kommando . Så se till att du har den här filen innan du fortsätter.
$ awk '$3 ~ /Lira/' test.txtDu kan välja att bara skriva ut en viss del av en matchning om du vill.
11. Räkna det totala antalet rader i inmatning
Kommandot awk har många specialvariabler som gör att vi enkelt kan göra många avancerade saker. En sådan variabel är NR, som innehåller det aktuella radnumret.
$ awk 'END {print NR} ' test.txtDetta kommando kommer att mata ut hur många rader som finns i vår test.txt -fil. Den upprepas först över varje rad, och när den har nått END kommer den att skriva ut värdet på NR - som innehåller det totala antalet rader i det här fallet.
12. Ställ in utmatningsfältavskiljare
Tidigare har vi visat hur man väljer inmatningsfältavskiljare med -F eller –Fältavskiljare alternativ. Kommandot awk låter oss också ange utmatningsfältavskiljaren. Nedanstående exempel visar detta med hjälp av ett praktiskt exempel.
$ date | awk 'OFS='-' {print$2,$3,$6}'Detta kommando skriver ut det aktuella datumet med formatet dd-mm-åå. Kör datumprogrammet utan awk för att se hur standardutmatningen ser ut.
13. Använda If Construct
Som andra populära programmeringsspråk , awk ger också användare if-else-konstruktionerna. If -satsen i awk har syntaxen nedan.
if (expression) { first_action second_action }Motsvarande åtgärder utförs endast om det villkorliga uttrycket är sant. Nedanstående exempel visar detta med hjälp av vår referensfil test.txt .
$ awk '{ if ($4>100) print }' test.txtDu behöver inte behålla indragningen strikt.
14. Använda If-Else Constructs
Du kan konstruera användbara if-else-stegar med syntaxen nedan. De är användbara vid utformning av komplexa awk -skript som hanterar dynamisk data.
if (expression) first_action else second_action$ awk '{ if ($4>100) print; else print }' test.txtKommandot ovan kommer att skriva ut hela referensfilen eftersom det fjärde fältet inte är större än 100 för varje rad.
15. Ställ in fältbredden
Ibland är inmatningsdatan ganska rörig, och användare kan ha svårt att visualisera dem i sina rapporter. Lyckligtvis ger awk en kraftfull inbyggd variabel som kallas FIELDWIDTHS som gör att vi kan definiera en blankstegsseparerad lista med bredder.
$ echo 5675784464657 | awk 'BEGIN {FIELDWIDTHS= '3 4 5'} {print $1, $2, $3}'Det är mycket användbart vid analys av spridda data eftersom vi kan styra utmatningsfältets bredd exakt som vi vill.
16. Ställ in inspelningsseparatorn
RS eller Record Separator är en annan inbyggd variabel som gör att vi kan ange hur poster separeras. Låt oss först skapa en fil som visar hur denna awk -variabel fungerar.
$ cat new.txt Melinda James 23 New Hampshire (222) 466-1234 Daniel James 99 Phonenix Road (322) 677-3412$ awk 'BEGIN{FS=' '; RS=''} {print $1,$3}' new.txtDetta kommando kommer att analysera dokumentet och spotta ut namn och adress för de två personerna.
17. Utskriftsmiljövariabler
Kommandot awk i Linux gör att vi enkelt kan skriva ut miljövariabler med variabeln ENVIRON. Kommandot nedan visar hur du använder detta för att skriva ut innehållet i PATH -variabeln.
$ awk 'BEGIN{ print ENVIRON['PATH'] }'Du kan skriva ut innehållet i alla miljövariabler genom att ersätta ENVIRON -variabelns argument. Kommandot nedan skriver ut värdet på miljövariabeln HEM.
$ awk 'BEGIN{ print ENVIRON['HOME'] }'18. Utelämna vissa fält från utdata
Kommandot awk tillåter oss att utelämna specifika rader från vår produktion. Följande kommando visar detta med hjälp av vår referensfil test.txt .
$ awk -F':' '{$2=''; print}' test.txtDetta kommando kommer att utelämna den andra kolumnen i vår fil, som innehåller huvudstadsnamnet för varje land. Du kan också utelämna mer än ett fält, som visas i nästa kommando.
$ awk -F':' '{$2='';$3='';print}' test.txt19. Ta bort tomma linjer
Ibland kan data innehålla för många tomma rader. Du kan använda kommandot awk för att ta bort tomma rader ganska enkelt. Kolla in nästa kommando för att se hur det fungerar i praktiken.
$ awk '/^[ ]*$/{next}{print}' new.txtVi har tagit bort alla tomma rader från filen new.txt med ett enkelt reguljärt uttryck och en awk inbyggd kallas nästa.
20. Ta bort släpande blanksteg
Utdata från många Linux -kommandon innehåller efterföljande blanksteg. Vi kan använda kommandot awk i Linux för att ta bort sådana blanksteg som mellanslag och flikar. Kolla in kommandot nedan för att se hur du hanterar sådana problem med hjälp av awk.
$ awk '{sub(/[ ]*$/, '');print}' new.txt test.txtLägg till några efterföljande blanksteg i våra referensfiler och verifiera om awk tog bort dem framgångsrikt eller inte. Det gjorde detta framgångsrikt i min maskin.
21. Kontrollera antalet fält i varje rad
Vi kan enkelt kontrollera hur många fält som finns i en rad med hjälp av en enkel awk one-liner. Det finns många sätt att göra detta, men vi kommer att använda några av awks inbyggda variabler för denna uppgift. NR -variabeln ger oss radnumret och NF -variabeln anger antalet fält.
$ awk '{print NR,'-->',NF}' test.txtNu kan vi bekräfta hur många fält det finns per rad i vårt test.txt dokumentera. Eftersom varje rad i den här filen innehåller fem fält är vi säkra på att kommandot fungerar som förväntat.
22. Verifiera aktuellt filnamn
Awk -variabeln FILENAME används för att verifiera det aktuella inmatningsfilnamnet. Vi visar hur detta fungerar med ett enkelt exempel. Det kan dock vara användbart i situationer där filnamnet inte är känt uttryckligen eller om det finns mer än en inmatningsfil.
$ awk '{print FILENAME}' test.txt $ awk '{print FILENAME}' test.txt new.txtKommandona ovan skriver ut filnamnet awk arbetar på varje gång det behandlar en ny rad med inmatningsfiler.
23. Verifiera antalet bearbetade poster
Följande exempel visar hur vi kan verifiera antalet poster som behandlats av kommandot awk. Eftersom ett stort antal Linux -systemadministratörer använder awk för att generera rapporter är det mycket användbart för dem.
$ awk '{print 'Processing Record - ',NR;} END {print ' Total Records Processed:', NR;}' test.txtJag använder ofta detta awk -snutt för att ha en tydlig översikt över mina handlingar. Du kan enkelt justera den för att rymma nya idéer eller handlingar.
24. Skriv ut det totala antalet tecken i en post
Awk -språket ger en praktisk funktion som kallas length () som berättar hur många tecken som finns i en post. Det är mycket användbart i ett antal scenarier. Ta en snabb titt på följande exempel för att se hur detta fungerar.
$ echo 'A random text string...' | awk '{ print length($0); }'$ awk '{ print length($0); }' /etc/passwdKommandot ovan kommer att skriva ut det totala antalet tecken som finns på varje rad i inmatningssträngen eller filen.
25. Skriv ut alla rader längre än en angiven längd
Vi kan lägga till några villkor för kommandot ovan och göra det bara att skriva ut de rader som är större än en fördefinierad längd. Det är användbart när du redan har en uppfattning om längden på en specifik post.
$ echo 'A random text string...' | awk 'length($0) > 10'$ awk '{ length($0) > 5; }' /etc/passwdDu kan kasta in fler alternativ och/eller argument för att justera kommandot baserat på dina krav.
26. Skriv ut antalet rader, tecken och ord
Följande awk -kommando i Linux skriver ut antalet rader, tecken och ord i en given ingång. Den använder NR -variabeln samt grundläggande aritmetik för att utföra denna operation.
$ echo 'This is a input line...' | awk '{ w += NF; c += length + 1 } END { print NR, w, c }'Det visar att det finns 1 rad, 5 ord och exakt 24 tecken i inmatningssträngen.
27. Beräkna ordfrekvens
Vi kan kombinera associativa matriser och for -loop i awk för att beräkna ordfrekvensen för ett dokument. Följande kommando kan verka lite komplext, men det är ganska enkelt när du väl förstår de grundläggande konstruktionerna.
$ awk 'BEGIN {FS='[^a-zA-Z]+' } { for (i=1; i<=NF; i++) words[tolower($i)]++ } END { for (i in words) print i, words[i] }' test.txtOm du har problem med ett-liner-kodavsnittet, kopiera följande kod till en ny fil och kör den med källan.
$ cat > frequency.awk BEGIN { FS='[^a-zA-Z]+' } { for (i=1; i<=NF; i++) words[tolower($i)]++ } END { for (i in words) print i, words[i] }Kör den sedan med -f alternativ.
$ awk -f frequency.awk test.txt28. Byt namn på filer med AWK
Kommandot awk kan användas för att byta namn på alla filer som matchar vissa kriterier. Följande kommando illustrerar hur du använder awk för att döpa om alla .MP3 -filer i en katalog till .mp3 -filer.
$ touch {a,b,c,d,e}.MP3 $ ls *.MP3 | awk '{ printf('mv '%s' '%s' ', $0, tolower($0)) }' $ ls *.MP3 | awk '{ printf('mv '%s' '%s' ', $0, tolower($0)) }' | shFörst skapade vi några demofiler med .MP3 -tillägg. Det andra kommandot visar användaren vad som händer när bytet är lyckat. Slutligen byter det sista kommandot namnoperationen med mv -kommandot i Linux.
29. Skriv ut ett fyrkantigt rot av ett nummer
AWK erbjuder flera inbyggda funktioner för manipulering av siffror. En av dem är funktionen sqrt (). Det är en C-liknande funktion som returnerar kvadratroten för ett givet tal. Ta en snabb titt på nästa exempel för att se hur det fungerar i allmänhet.
$ awk 'BEGIN{ print sqrt(36); print sqrt(0); print sqrt(-16) }'Eftersom du inte kan bestämma kvadratroten för ett negativt tal, kommer utdata att visa ett speciellt nyckelord som heter 'nan' istället för sqrt (-12).
30. Skriv ut logaritmen för ett tal
Awk -funktionsloggen () ger den naturliga logaritmen för ett tal. Det fungerar dock bara med positiva siffror, så var medveten om att validera användarnas inmatning. Annars kan någon bryta dina awk -program och få opålitlig tillgång till systemresurser.
$ awk 'BEGIN{ print log(36); print log(0); print log(-16) }'Du bör se logaritmen 36 och verifiera att logaritmen 0 är oändligt och loggen med ett negativt värde är 'Not a Number' eller nan.
31. Skriv ut ett tals exponential
Den exponentiella os ett tal n ger värdet av e^n. Det används vanligtvis i awk -skript som handlar om stora siffror eller komplex aritmetisk logik. Vi kan generera exponentialen för ett tal med den inbyggda awk-funktionen exp ().
$ awk 'BEGIN{ print exp(30); print log(0); print exp(-16) }'Awk kan dock inte beräkna exponentiell för extremt stora tal. Du bör göra sådana beräkningar med programmeringsspråk på låg nivå som C och mata värdet till dina awk-skript.
32. Generera slumpmässiga nummer med AWK
Vi kan använda kommandot awk i Linux för att generera slumpmässiga nummer. Dessa nummer kommer att ligga i intervallet 0 till 1, men aldrig 0 eller 1. Du kan multiplicera ett fast värde med det resulterande talet för att få ett större slumpmässigt värde.
$ awk 'BEGIN{ print rand(); print rand()*99 }'Rand () -funktionen behöver inget argument. Dessutom är siffrorna som genereras av denna funktion inte exakt slumpmässiga utan snarare pseudoslumpmässiga. Dessutom är det ganska enkelt att förutsäga dessa siffror från körning till körning. Så du bör inte lita på dem för känsliga beräkningar.
33. Färgkompilatorvarningar i rött
Moderna Linux -kompilatorer kommer att kasta varningar om din kod inte upprätthåller språkstandarder eller har fel som inte stoppar programkörningen. Följande awk -kommando kommer att skriva ut varningsraderna som genereras av en kompilator i rött.
$ gcc -Wall main.c |& awk '/: warning:/{print 'x1B[01;31m' $0 'x1B[m';next;}{print}'Detta kommando är användbart om du vill specificera kompilatorvarningar specifikt. Du kan använda detta kommando med valfri kompilator än gcc, bara se till att ändra mönstret /: varning: / för att återspegla just den kompilatorn.
34. Skriv ut UUID -informationen för filsystemet
UUID eller Universellt unik identifierare är ett nummer som kan användas för att identifiera resurser som Linux -filsystemet . Vi kan helt enkelt skriva ut UUID -informationen i vårt filsystem med hjälp av följande Linux awk -kommando.
$ awk '/UUID/ {print $0}' /etc/fstabDetta kommando söker efter texten UUID i /etc/fstab fil med hjälp av awk -mönster. Det returnerar en kommentar från filen som vi inte är intresserade av. Kommandot nedan ser till att vi bara får de rader som börjar med UUID.
$ awk '/^UUID/ {print $1}' /etc/fstabDet begränsar utmatningen till det första fältet. Så vi får bara UUID -numren.
35. Skriv ut Linux Kernel Image Version
Olika Linux -kärnbilder används av olika Linux -distributioner . Vi kan enkelt skriva ut den exakta kärnbild som vårt system bygger på att använda awk. Kolla in följande kommando för att se hur det fungerar i allmänhet.
$ uname -a | awk '{print $3}'Vi har först utfärdat kommandot uname med -till alternativet och skickade sedan dessa data till awk. Sedan har vi extraherat versionsinformationen för kärnbilden med hjälp av awk.
36. Lägg till radnummer före rader
Användare kan stöta på textfiler som inte innehåller radnummer ganska ofta. Lyckligtvis kan du enkelt lägga till radnummer till en fil med hjälp av kommandot awk i Linux. Ta en närmare titt på exemplet nedan för att se hur detta fungerar i verkliga livet.
$ awk '{ print FNR '. ' $0 ;next}{print}' test.txtKommandot ovan lägger till ett radnummer före var och en av raderna i vår test.txt -referensfil. Den använder den inbyggda awk-variabeln FNR för att hantera detta.
37. Skriv ut en fil efter att innehållet har sorterats
Vi kan också använda awk för att skriva ut en sorterad lista över alla rader. Följande kommandon skriver ut namnet på alla länder i vår test.txt i sorterad ordning.
$ awk -F ':' '{ print $1 }' test.txt | sortNästa kommando kommer att skriva ut inloggningsnamnet för alla användare från /etc/passwd fil.
$ awk -F ':' '{ print $1 }' /etc/passwd | sortDu kan enkelt ändra sorteringsordningen genom att ändra sorteringskommandot.
38. Skriv ut den manuella sidan
Den manuella sidan innehåller detaljerad information om kommandot awk tillsammans med alla tillgängliga alternativ. Det är oerhört viktigt för människor som vill behärska awk -kommandot noggrant.
$ man awkOm du vill lära dig komplexa awk -funktioner kommer det här att vara till stor hjälp för dig. Läs den här dokumentationen när du har problem.
39. Skriv ut hjälpsidan
Hjälpsidan innehåller sammanfattad information om alla möjliga kommandoradsargument. Du kan använda hjälpguiden för awk med ett av följande kommandon.
$ awk -h $ awk --helpSe den här sidan om du vill ha en snabb översikt över alla tillgängliga alternativ för awk.
40. Skriv ut versioninformation
Versionsinformationen ger oss information om hur ett program byggs. Versionssidan för awk innehåller information som dess upphovsrätt, sammanställningsverktyg och så vidare. Du kan visa denna information med ett av följande awk -kommandon.
$ awk -V $ awk --versionAvslutande tankar
Kommandot awk i Linux tillåter oss att göra alla möjliga saker, inklusive filbehandling och systemunderhåll. Det ger ett brett utbud av funktioner för att hantera dagliga datoruppgifter ganska enkelt. Våra redaktörer har sammanställt denna guide med 40 användbara awk -kommandon som kan användas för textmanipulering eller administration. Eftersom AWK är ett fullvärdigt programmeringsspråk i sig, finns det flera sätt att göra samma jobb. Så undra inte varför vi gör vissa saker på ett annat sätt. Du kan alltid kurera dina egna recept baserat på din kompetens och erfarenhet. Lämna oss dina tankar, meddela oss om du har några frågor.
Dela med sig Facebook Twitter Pinterest WhatsApp ReddIt Telegram Viber
- Taggar
- Programmeringsverktyg
- Systemverktyg
7 KOMMENTARER
- Ramesh 24 april 2020 klockan 07:48
Vad är bäst sed eller awk?
Svar
- lauhub 6 januari 2021 Kl. 04:41
Båda är bäst:
- sed är användbart för enkla ersättnings-/utgåva -uppgifter och har vissa begränsningar när det gäller att programmera komplexa uppgifter (även om avancerade användare kan göra många saker)
- awk måste vara mer omfattande för enkla uppgifter men gör det möjligt att använda mer komplexa datastrukturer för mer komplex programmering.
Hur som helst, allt beror på dina behov och kunskap om dessa verktyg
Svar- DC 16 juli 2021 Kl. 09:17
Båda är funktionellt olika. sed är begränsad funktionalitet. Normalt används för inline hitta och ersätt strängredigerare.
Svar
awk används för datamanipulering och ger fler programmeringsfunktioner- Ahmed 16 april 2020 Klockan 13:24
Hej,
Svar
Exemplen är bra men det hade varit bättre om du också hade postat utdata efter exempel.
- Rubaiat Hossain 18 april 2020 Klockan 01:28
Tack, Ahmed för att du följer oss. Vi är dock rädda att att lägga till separata bilder för varje kommando kommer att göra guiden extremt lång och därför kan användare som läser detta från små skärmar som telefoner/surfplattor möta oönskad rullningsupplevelse.
Dessutom uppmuntrar vi våra läsare att tweak dessa awk-kommandon i Linux när du är på språng och prova dem från första hand. På så sätt behärskar du dem snabbare.
Svar- Stefan 6 april 2020 klockan 10:54
Utmärkta exempel. Tack för den här
Svar- Karan Grover 2 april 2020 Klockan 17:29
fina okej exempel
SvarLÄMNA ETT SVAR Avbryt svar
Kommentar: Ange din kommentar! Namn:* Ange ditt namn här E -post:* Du har angett en felaktig e -postadress! Ange din e -postadress här Webbplats:Spara mitt namn, mejl och webbplats i den här webbläsaren för nästa gång jag kommenterar.
Senaste posten
Android10 bästa ansiktsbytesappar för Android och iOS -enhet
Windows OSHur man schemalägger Windows 10 för att tömma papperskorgen automatiskt
AndroidDe 10 bästa faktureringsapparna för Android -enheter för att få betalt snabbt
Windows OSDe 10 bästa GPU -riktmärken för din dator
Måste läsas
LinuxHur man installerar och konfigurerar XAMPP på Ubuntu Linux
LinuxUbuntu Communitheme - Ett nytt Ubuntu Community -tema
LinuxHur man installerar programvara från källkoden i ditt Linux -system
LinuxRedNotebook - En modern och gratis dagbok och journalprogramvara för Linux
Relaterade inlägg
Så här installerar och konfigurerar du Cockpit Web Console på Linux System
Hur man installerar och konfigurerar Yii PHP Framework på Ubuntu Linux
Hur man fixar W: Vissa indexfiler kunde inte ladda ner Fel i Ubuntu Linux
Så här installerar och konfigurerar du 1Password på Linux Desktop
Så här installerar du den senaste GNU Nano -textredigeraren på Linux -skrivbordet
Så här installerar du en ny Relic Infrastructure Agent i Linux -systemet
Detta kommando är användbart om du vill specificera kompilatorvarningar specifikt. Du kan använda detta kommando med valfri kompilator än gcc, bara se till att ändra mönstret /: varning: / för att återspegla just den kompilatorn.
34. Skriv ut UUID -informationen för filsystemet
UUID eller Universellt unik identifierare är ett nummer som kan användas för att identifiera resurser som Linux -filsystemet . Vi kan helt enkelt skriva ut UUID -informationen i vårt filsystem med hjälp av följande Linux awk -kommando.
$ awk '/UUID/ {printHem A-Z-kommandon 40 Praktiskt och användbart awk -kommando i Linux och BSD FörbiMehedi Hasan IA-Z-kommandonUtvalda 1271 7 }' /etc/fstabINNEHÅLL
- Förstå AWK -program
- Praktiska exempel på awk Command i Linux
- 1. Skriv ut specifika fält från textutmatning
- 2. Skriv ut flera fält från textutmatning
- 3. Använd BEGIN -uttalanden
- 4. Använd SLUT -uttalanden
- 5. Sök med hjälp av mönster
- 6. Extrahera information från filer
- 7. Läs AWK -skript från källfilen
- 8. Ställ in inmatningsfältet
- 9. Skriv ut information baserat på skick
- 10. Skriv ut information genom att jämföra vanliga uttryck
- 11. Räkna det totala antalet rader i inmatning
- 12. Ställ in utmatningsfältavskiljare
- 13. Använda If Construct
- 14. Använda If-Else Constructs
- 15. Ställ in fältbredden
- 16. Ställ in inspelningsseparatorn
- 17. Utskriftsmiljövariabler
- 18. Utelämna vissa fält från utdata
- 19. Ta bort tomma linjer
- 20. Ta bort släpande blanksteg
- 21. Kontrollera antalet fält i varje rad
- 22. Verifiera aktuellt filnamn
- 23. Verifiera antalet bearbetade poster
- 24. Skriv ut det totala antalet tecken i en post
- 25. Skriv ut alla rader längre än en angiven längd
- 26. Skriv ut antalet rader, tecken och ord
- 27. Beräkna ordfrekvens
- 28. Byt namn på filer med AWK
- 29. Skriv ut ett fyrkantigt rot av ett nummer
- 30. Skriv ut logaritmen för ett tal
- 31. Skriv ut ett tals exponential
- 32. Generera slumpmässiga nummer med AWK
- 33. Färgkompilatorvarningar i rött
- 34. Skriv ut UUID -informationen för filsystemet
- 35. Skriv ut Linux Kernel Image Version
- 36. Lägg till radnummer före rader
- 37. Skriv ut en fil efter att innehållet har sorterats
- 38. Skriv ut den manuella sidan
- 39. Skriv ut hjälpsidan
- 40. Skriv ut versioninformation
- Avslutande tankar
AWK är ett kraftfullt> fullfjädrat programmeringsspråk . AWK får sitt namn från initialerna till dess författare - Aho, Weinberger och Kernighan. Awk -kommandot i Linux och andra Unix -system åberopar tolken som kör AWK -skript. Flera implementeringar av awk finns i de senaste systemen som bland annat gawk (GNU awk), mawk (Minimal awk) och nawk (New awk). Kolla in exemplen nedan om du vill behärska awk.
Förstå AWK -program
Program skrivna i awk består av regler, som helt enkelt är ett par mönster och handlingar. Mönstren är grupperade i en tandställning {}, och åtgärdsdelen utlöses när awk hittar texter som matchar mönstret. Även om awk utvecklades för att skriva enliners, kan erfarna användare enkelt skriva komplexa skript med det.
AWK-program är mycket användbara för storskalig filbehandling. Det identifierar textfält med specialtecken och separatorer. Det erbjuder också programmeringskonstruktioner på hög nivå som arrays och loopar. Så att skriva robusta program med vanlig awk är mycket genomförbart.
Praktiska exempel på awk Command i Linux
Administratörer använder normalt awk för datautvinning och rapportering tillsammans med andra typer av filmanipulationer. Nedan har vi diskuterat awk mer detaljerat. Följ kommandona noga och prova dem i din terminal för en fullständig förståelse.
1. Skriv ut specifika fält från textutmatning
Mest mycket använda Linux -kommandon visa sin produktion med olika fält. Normalt använder vi Linux cut -kommandot för att extrahera ett specifikt fält från sådana data. Kommandot nedan visar dig dock hur du gör detta med kommandot awk.
$ who | awk '{print $1}'Detta kommando visar bara det första fältet från utdata från who -kommandot. Så du får helt enkelt användarnamnen för alla loggade användare. Här, $ 1 representerar det första fältet. Du måste använda $ N om du vill extrahera det n: e fältet.
2. Skriv ut flera fält från textutmatning
Awk -tolken gör att vi kan skriva ut hur många fält som helst. Nedanstående exempel visar hur vi extraherar de två första fälten från utdata från who -kommandot.
$ who | awk '{print $1, $2}'Du kan också styra ordningen på utdatafälten. Följande exempel visar först den andra kolumnen som produceras av who -kommandot och sedan den första kolumnen i det andra fältet.
$ who | awk '{print $2, $1}'Lämna bara fältparametrarna ( $ N ) för att visa hela data.
3. Använd BEGIN -uttalanden
BEGIN -satsen tillåter användare att skriva ut viss känd information i utdata. Det används vanligtvis för att formatera utdata som genereras av awk. Syntaxen för detta uttalande visas nedan.
BEGIN { Actions} {ACTION}De åtgärder som bildar BEGIN -sektionen utlöses alltid. Sedan läser awk de återstående raderna en efter en och ser om något behöver göras.
$ who | awk 'BEGIN {print 'User From'} {print $1, $2}'Kommandot ovan kommer att märka de två utmatningsfälten som extraheras från who -kommandot.
4. Använd SLUT -uttalanden
Du kan också använda END -satsen för att se till att vissa åtgärder alltid utförs i slutet av din operation. Placera helt enkelt END -sektionen efter huvuduppsättningen.
$ who | awk 'BEGIN {print 'User From'} {print $1, $2} END {print '--COMPLETED--'}'Kommandot ovan kommer att lägga till den givna strängen i slutet av utdata.
5. Sök med hjälp av mönster
En stor del av awks arbete innebär mönstermatchning och regex. Som vi redan har diskuterat, söker awk efter mönster i varje inmatningsrad och utför bara åtgärden när en matchning utlöses. Våra tidigare regler bestod av endast handlingar. Nedan har vi illustrerat grunderna för mönstermatchning med hjälp av kommandot awk i Linux.
$ who | awk '/mary/ {print}'Detta kommando kommer att se om användaren mary för närvarande är inloggad eller inte. Det kommer att mata ut hela raden om någon matchning hittas.
6. Extrahera information från filer
Kommandot awk fungerar mycket bra med filer och kan användas för komplexa filbehandlingsuppgifter. Följande kommando illustrerar hur awk hanterar filer.
$ awk '/hello/ {print}' /usr/share/dict/american-englishDetta kommando söker efter mönstret 'hej' i den amerikansk-engelska ordlistfilen. Den finns på de flesta Linux-baserade distributioner . Således kan du enkelt prova awk -program på den här filen.
7. Läs AWK -skript från källfilen
Även om det är användbart att skriva enlinjeprogram, kan du också skriva stora program med awk helt. Du vill spara dem och köra ditt program med hjälp av källfilen.
$ awk -f script-file $ awk --file script-fileDe -f eller -fil alternativet låter oss ange programfilen. Du behöver dock inte använda citattecken (‘‘) inuti skriptfilen eftersom Linux-skalet inte tolkar programkoden på detta sätt.
8. Ställ in inmatningsfältet
En fältavskiljare är en avgränsare som delar inmatningsposten. Vi kan enkelt ange fältavskiljare att awk med hjälp av -F eller –Fältavskiljare alternativ. Kolla in kommandona nedan för att se hur detta fungerar.
$ echo 'This-is-a-simple-example' | awk -F - ' {print $1} ' $ echo 'This-is-a-simple-example' | awk --field-separator - ' {print $1} 'Det fungerar på samma sätt när man använder skriptfiler snarare än ett-linjers awk-kommando i Linux.
9. Skriv ut information baserat på skick
Vi har diskuterat kommandot Linux cut i en tidigare guide. Nu visar vi dig hur du extraherar information med hjälp av awk endast när vissa kriterier matchas. Vi kommer att använda samma testfil som vi använde i den guiden. Så gå dit och gör en kopia av test.txt fil.
$ awk '$4 > 50' test.txtDetta kommando kommer att skriva ut alla nationer från filen test.txt, som har mer än 50 miljoner invånare.
10. Skriv ut information genom att jämföra vanliga uttryck
Följande awk -kommando kontrollerar om det tredje fältet på en rad innehåller mönstret 'Lira' och skriver ut hela raden om en matchning hittas. Vi använder igen filen test.txt som används för att illustrera Linux cut -kommando . Så se till att du har den här filen innan du fortsätter.
$ awk '$3 ~ /Lira/' test.txtDu kan välja att bara skriva ut en viss del av en matchning om du vill.
11. Räkna det totala antalet rader i inmatning
Kommandot awk har många specialvariabler som gör att vi enkelt kan göra många avancerade saker. En sådan variabel är NR, som innehåller det aktuella radnumret.
$ awk 'END {print NR} ' test.txtDetta kommando kommer att mata ut hur många rader som finns i vår test.txt -fil. Den upprepas först över varje rad, och när den har nått END kommer den att skriva ut värdet på NR - som innehåller det totala antalet rader i det här fallet.
12. Ställ in utmatningsfältavskiljare
Tidigare har vi visat hur man väljer inmatningsfältavskiljare med -F eller –Fältavskiljare alternativ. Kommandot awk låter oss också ange utmatningsfältavskiljaren. Nedanstående exempel visar detta med hjälp av ett praktiskt exempel.
$ date | awk 'OFS='-' {print$2,$3,$6}'Detta kommando skriver ut det aktuella datumet med formatet dd-mm-åå. Kör datumprogrammet utan awk för att se hur standardutmatningen ser ut.
13. Använda If Construct
Som andra populära programmeringsspråk , awk ger också användare if-else-konstruktionerna. If -satsen i awk har syntaxen nedan.
if (expression) { first_action second_action }Motsvarande åtgärder utförs endast om det villkorliga uttrycket är sant. Nedanstående exempel visar detta med hjälp av vår referensfil test.txt .
$ awk '{ if ($4>100) print }' test.txtDu behöver inte behålla indragningen strikt.
14. Använda If-Else Constructs
Du kan konstruera användbara if-else-stegar med syntaxen nedan. De är användbara vid utformning av komplexa awk -skript som hanterar dynamisk data.
if (expression) first_action else second_action$ awk '{ if ($4>100) print; else print }' test.txtKommandot ovan kommer att skriva ut hela referensfilen eftersom det fjärde fältet inte är större än 100 för varje rad.
15. Ställ in fältbredden
Ibland är inmatningsdatan ganska rörig, och användare kan ha svårt att visualisera dem i sina rapporter. Lyckligtvis ger awk en kraftfull inbyggd variabel som kallas FIELDWIDTHS som gör att vi kan definiera en blankstegsseparerad lista med bredder.
$ echo 5675784464657 | awk 'BEGIN {FIELDWIDTHS= '3 4 5'} {print $1, $2, $3}'Det är mycket användbart vid analys av spridda data eftersom vi kan styra utmatningsfältets bredd exakt som vi vill.
16. Ställ in inspelningsseparatorn
RS eller Record Separator är en annan inbyggd variabel som gör att vi kan ange hur poster separeras. Låt oss först skapa en fil som visar hur denna awk -variabel fungerar.
$ cat new.txt Melinda James 23 New Hampshire (222) 466-1234 Daniel James 99 Phonenix Road (322) 677-3412$ awk 'BEGIN{FS=' '; RS=''} {print $1,$3}' new.txtDetta kommando kommer att analysera dokumentet och spotta ut namn och adress för de två personerna.
17. Utskriftsmiljövariabler
Kommandot awk i Linux gör att vi enkelt kan skriva ut miljövariabler med variabeln ENVIRON. Kommandot nedan visar hur du använder detta för att skriva ut innehållet i PATH -variabeln.
$ awk 'BEGIN{ print ENVIRON['PATH'] }'Du kan skriva ut innehållet i alla miljövariabler genom att ersätta ENVIRON -variabelns argument. Kommandot nedan skriver ut värdet på miljövariabeln HEM.
$ awk 'BEGIN{ print ENVIRON['HOME'] }'18. Utelämna vissa fält från utdata
Kommandot awk tillåter oss att utelämna specifika rader från vår produktion. Följande kommando visar detta med hjälp av vår referensfil test.txt .
$ awk -F':' '{$2=''; print}' test.txtDetta kommando kommer att utelämna den andra kolumnen i vår fil, som innehåller huvudstadsnamnet för varje land. Du kan också utelämna mer än ett fält, som visas i nästa kommando.
$ awk -F':' '{$2='';$3='';print}' test.txt19. Ta bort tomma linjer
Ibland kan data innehålla för många tomma rader. Du kan använda kommandot awk för att ta bort tomma rader ganska enkelt. Kolla in nästa kommando för att se hur det fungerar i praktiken.
$ awk '/^[ ]*$/{next}{print}' new.txtVi har tagit bort alla tomma rader från filen new.txt med ett enkelt reguljärt uttryck och en awk inbyggd kallas nästa.
20. Ta bort släpande blanksteg
Utdata från många Linux -kommandon innehåller efterföljande blanksteg. Vi kan använda kommandot awk i Linux för att ta bort sådana blanksteg som mellanslag och flikar. Kolla in kommandot nedan för att se hur du hanterar sådana problem med hjälp av awk.
$ awk '{sub(/[ ]*$/, '');print}' new.txt test.txtLägg till några efterföljande blanksteg i våra referensfiler och verifiera om awk tog bort dem framgångsrikt eller inte. Det gjorde detta framgångsrikt i min maskin.
21. Kontrollera antalet fält i varje rad
Vi kan enkelt kontrollera hur många fält som finns i en rad med hjälp av en enkel awk one-liner. Det finns många sätt att göra detta, men vi kommer att använda några av awks inbyggda variabler för denna uppgift. NR -variabeln ger oss radnumret och NF -variabeln anger antalet fält.
$ awk '{print NR,'-->',NF}' test.txtNu kan vi bekräfta hur många fält det finns per rad i vårt test.txt dokumentera. Eftersom varje rad i den här filen innehåller fem fält är vi säkra på att kommandot fungerar som förväntat.
22. Verifiera aktuellt filnamn
Awk -variabeln FILENAME används för att verifiera det aktuella inmatningsfilnamnet. Vi visar hur detta fungerar med ett enkelt exempel. Det kan dock vara användbart i situationer där filnamnet inte är känt uttryckligen eller om det finns mer än en inmatningsfil.
$ awk '{print FILENAME}' test.txt $ awk '{print FILENAME}' test.txt new.txtKommandona ovan skriver ut filnamnet awk arbetar på varje gång det behandlar en ny rad med inmatningsfiler.
23. Verifiera antalet bearbetade poster
Följande exempel visar hur vi kan verifiera antalet poster som behandlats av kommandot awk. Eftersom ett stort antal Linux -systemadministratörer använder awk för att generera rapporter är det mycket användbart för dem.
$ awk '{print 'Processing Record - ',NR;} END {print ' Total Records Processed:', NR;}' test.txtJag använder ofta detta awk -snutt för att ha en tydlig översikt över mina handlingar. Du kan enkelt justera den för att rymma nya idéer eller handlingar.
24. Skriv ut det totala antalet tecken i en post
Awk -språket ger en praktisk funktion som kallas length () som berättar hur många tecken som finns i en post. Det är mycket användbart i ett antal scenarier. Ta en snabb titt på följande exempel för att se hur detta fungerar.
$ echo 'A random text string...' | awk '{ print length($0); }'$ awk '{ print length($0); }' /etc/passwdKommandot ovan kommer att skriva ut det totala antalet tecken som finns på varje rad i inmatningssträngen eller filen.
25. Skriv ut alla rader längre än en angiven längd
Vi kan lägga till några villkor för kommandot ovan och göra det bara att skriva ut de rader som är större än en fördefinierad längd. Det är användbart när du redan har en uppfattning om längden på en specifik post.
$ echo 'A random text string...' | awk 'length($0) > 10'$ awk '{ length($0) > 5; }' /etc/passwdDu kan kasta in fler alternativ och/eller argument för att justera kommandot baserat på dina krav.
26. Skriv ut antalet rader, tecken och ord
Följande awk -kommando i Linux skriver ut antalet rader, tecken och ord i en given ingång. Den använder NR -variabeln samt grundläggande aritmetik för att utföra denna operation.
$ echo 'This is a input line...' | awk '{ w += NF; c += length + 1 } END { print NR, w, c }'Det visar att det finns 1 rad, 5 ord och exakt 24 tecken i inmatningssträngen.
27. Beräkna ordfrekvens
Vi kan kombinera associativa matriser och for -loop i awk för att beräkna ordfrekvensen för ett dokument. Följande kommando kan verka lite komplext, men det är ganska enkelt när du väl förstår de grundläggande konstruktionerna.
$ awk 'BEGIN {FS='[^a-zA-Z]+' } { for (i=1; i<=NF; i++) words[tolower($i)]++ } END { for (i in words) print i, words[i] }' test.txtOm du har problem med ett-liner-kodavsnittet, kopiera följande kod till en ny fil och kör den med källan.
$ cat > frequency.awk BEGIN { FS='[^a-zA-Z]+' } { for (i=1; i<=NF; i++) words[tolower($i)]++ } END { for (i in words) print i, words[i] }Kör den sedan med -f alternativ.
$ awk -f frequency.awk test.txt28. Byt namn på filer med AWK
Kommandot awk kan användas för att byta namn på alla filer som matchar vissa kriterier. Följande kommando illustrerar hur du använder awk för att döpa om alla .MP3 -filer i en katalog till .mp3 -filer.
$ touch {a,b,c,d,e}.MP3 $ ls *.MP3 | awk '{ printf('mv '%s' '%s' ', $0, tolower($0)) }' $ ls *.MP3 | awk '{ printf('mv '%s' '%s' ', $0, tolower($0)) }' | shFörst skapade vi några demofiler med .MP3 -tillägg. Det andra kommandot visar användaren vad som händer när bytet är lyckat. Slutligen byter det sista kommandot namnoperationen med mv -kommandot i Linux.
29. Skriv ut ett fyrkantigt rot av ett nummer
AWK erbjuder flera inbyggda funktioner för manipulering av siffror. En av dem är funktionen sqrt (). Det är en C-liknande funktion som returnerar kvadratroten för ett givet tal. Ta en snabb titt på nästa exempel för att se hur det fungerar i allmänhet.
$ awk 'BEGIN{ print sqrt(36); print sqrt(0); print sqrt(-16) }'Eftersom du inte kan bestämma kvadratroten för ett negativt tal, kommer utdata att visa ett speciellt nyckelord som heter 'nan' istället för sqrt (-12).
30. Skriv ut logaritmen för ett tal
Awk -funktionsloggen () ger den naturliga logaritmen för ett tal. Det fungerar dock bara med positiva siffror, så var medveten om att validera användarnas inmatning. Annars kan någon bryta dina awk -program och få opålitlig tillgång till systemresurser.
$ awk 'BEGIN{ print log(36); print log(0); print log(-16) }'Du bör se logaritmen 36 och verifiera att logaritmen 0 är oändligt och loggen med ett negativt värde är 'Not a Number' eller nan.
31. Skriv ut ett tals exponential
Den exponentiella os ett tal n ger värdet av e^n. Det används vanligtvis i awk -skript som handlar om stora siffror eller komplex aritmetisk logik. Vi kan generera exponentialen för ett tal med den inbyggda awk-funktionen exp ().
$ awk 'BEGIN{ print exp(30); print log(0); print exp(-16) }'Awk kan dock inte beräkna exponentiell för extremt stora tal. Du bör göra sådana beräkningar med programmeringsspråk på låg nivå som C och mata värdet till dina awk-skript.
32. Generera slumpmässiga nummer med AWK
Vi kan använda kommandot awk i Linux för att generera slumpmässiga nummer. Dessa nummer kommer att ligga i intervallet 0 till 1, men aldrig 0 eller 1. Du kan multiplicera ett fast värde med det resulterande talet för att få ett större slumpmässigt värde.
$ awk 'BEGIN{ print rand(); print rand()*99 }'Rand () -funktionen behöver inget argument. Dessutom är siffrorna som genereras av denna funktion inte exakt slumpmässiga utan snarare pseudoslumpmässiga. Dessutom är det ganska enkelt att förutsäga dessa siffror från körning till körning. Så du bör inte lita på dem för känsliga beräkningar.
33. Färgkompilatorvarningar i rött
Moderna Linux -kompilatorer kommer att kasta varningar om din kod inte upprätthåller språkstandarder eller har fel som inte stoppar programkörningen. Följande awk -kommando kommer att skriva ut varningsraderna som genereras av en kompilator i rött.
$ gcc -Wall main.c |& awk '/: warning:/{print 'x1B[01;31m' $0 'x1B[m';next;}{print}'Detta kommando är användbart om du vill specificera kompilatorvarningar specifikt. Du kan använda detta kommando med valfri kompilator än gcc, bara se till att ändra mönstret /: varning: / för att återspegla just den kompilatorn.
34. Skriv ut UUID -informationen för filsystemet
UUID eller Universellt unik identifierare är ett nummer som kan användas för att identifiera resurser som Linux -filsystemet . Vi kan helt enkelt skriva ut UUID -informationen i vårt filsystem med hjälp av följande Linux awk -kommando.
$ awk '/UUID/ {print $0}' /etc/fstabDetta kommando söker efter texten UUID i /etc/fstab fil med hjälp av awk -mönster. Det returnerar en kommentar från filen som vi inte är intresserade av. Kommandot nedan ser till att vi bara får de rader som börjar med UUID.
$ awk '/^UUID/ {print $1}' /etc/fstabDet begränsar utmatningen till det första fältet. Så vi får bara UUID -numren.
35. Skriv ut Linux Kernel Image Version
Olika Linux -kärnbilder används av olika Linux -distributioner . Vi kan enkelt skriva ut den exakta kärnbild som vårt system bygger på att använda awk. Kolla in följande kommando för att se hur det fungerar i allmänhet.
$ uname -a | awk '{print $3}'Vi har först utfärdat kommandot uname med -till alternativet och skickade sedan dessa data till awk. Sedan har vi extraherat versionsinformationen för kärnbilden med hjälp av awk.
36. Lägg till radnummer före rader
Användare kan stöta på textfiler som inte innehåller radnummer ganska ofta. Lyckligtvis kan du enkelt lägga till radnummer till en fil med hjälp av kommandot awk i Linux. Ta en närmare titt på exemplet nedan för att se hur detta fungerar i verkliga livet.
$ awk '{ print FNR '. ' $0 ;next}{print}' test.txtKommandot ovan lägger till ett radnummer före var och en av raderna i vår test.txt -referensfil. Den använder den inbyggda awk-variabeln FNR för att hantera detta.
37. Skriv ut en fil efter att innehållet har sorterats
Vi kan också använda awk för att skriva ut en sorterad lista över alla rader. Följande kommandon skriver ut namnet på alla länder i vår test.txt i sorterad ordning.
$ awk -F ':' '{ print $1 }' test.txt | sortNästa kommando kommer att skriva ut inloggningsnamnet för alla användare från /etc/passwd fil.
$ awk -F ':' '{ print $1 }' /etc/passwd | sortDu kan enkelt ändra sorteringsordningen genom att ändra sorteringskommandot.
38. Skriv ut den manuella sidan
Den manuella sidan innehåller detaljerad information om kommandot awk tillsammans med alla tillgängliga alternativ. Det är oerhört viktigt för människor som vill behärska awk -kommandot noggrant.
$ man awkOm du vill lära dig komplexa awk -funktioner kommer det här att vara till stor hjälp för dig. Läs den här dokumentationen när du har problem.
39. Skriv ut hjälpsidan
Hjälpsidan innehåller sammanfattad information om alla möjliga kommandoradsargument. Du kan använda hjälpguiden för awk med ett av följande kommandon.
$ awk -h $ awk --helpSe den här sidan om du vill ha en snabb översikt över alla tillgängliga alternativ för awk.
40. Skriv ut versioninformation
Versionsinformationen ger oss information om hur ett program byggs. Versionssidan för awk innehåller information som dess upphovsrätt, sammanställningsverktyg och så vidare. Du kan visa denna information med ett av följande awk -kommandon.
$ awk -V $ awk --versionAvslutande tankar
Kommandot awk i Linux tillåter oss att göra alla möjliga saker, inklusive filbehandling och systemunderhåll. Det ger ett brett utbud av funktioner för att hantera dagliga datoruppgifter ganska enkelt. Våra redaktörer har sammanställt denna guide med 40 användbara awk -kommandon som kan användas för textmanipulering eller administration. Eftersom AWK är ett fullvärdigt programmeringsspråk i sig, finns det flera sätt att göra samma jobb. Så undra inte varför vi gör vissa saker på ett annat sätt. Du kan alltid kurera dina egna recept baserat på din kompetens och erfarenhet. Lämna oss dina tankar, meddela oss om du har några frågor.
Dela med sig Facebook Twitter Pinterest WhatsApp ReddIt Telegram Viber
- Taggar
- Programmeringsverktyg
- Systemverktyg
7 KOMMENTARER
- Ramesh 24 april 2020 klockan 07:48
Vad är bäst sed eller awk?
Svar
- lauhub 6 januari 2021 Kl. 04:41
Båda är bäst:
- sed är användbart för enkla ersättnings-/utgåva -uppgifter och har vissa begränsningar när det gäller att programmera komplexa uppgifter (även om avancerade användare kan göra många saker)
- awk måste vara mer omfattande för enkla uppgifter men gör det möjligt att använda mer komplexa datastrukturer för mer komplex programmering.
Hur som helst, allt beror på dina behov och kunskap om dessa verktyg
Svar- DC 16 juli 2021 Kl. 09:17
Båda är funktionellt olika. sed är begränsad funktionalitet. Normalt används för inline hitta och ersätt strängredigerare.
Svar
awk används för datamanipulering och ger fler programmeringsfunktioner- Ahmed 16 april 2020 Klockan 13:24
Hej,
Svar
Exemplen är bra men det hade varit bättre om du också hade postat utdata efter exempel.
- Rubaiat Hossain 18 april 2020 Klockan 01:28
Tack, Ahmed för att du följer oss. Vi är dock rädda att att lägga till separata bilder för varje kommando kommer att göra guiden extremt lång och därför kan användare som läser detta från små skärmar som telefoner/surfplattor möta oönskad rullningsupplevelse.
Dessutom uppmuntrar vi våra läsare att tweak dessa awk-kommandon i Linux när du är på språng och prova dem från första hand. På så sätt behärskar du dem snabbare.
Svar- Stefan 6 april 2020 klockan 10:54
Utmärkta exempel. Tack för den här
Svar- Karan Grover 2 april 2020 Klockan 17:29
fina okej exempel
SvarLÄMNA ETT SVAR Avbryt svar
Kommentar: Ange din kommentar! Namn:* Ange ditt namn här E -post:* Du har angett en felaktig e -postadress! Ange din e -postadress här Webbplats:Spara mitt namn, mejl och webbplats i den här webbläsaren för nästa gång jag kommenterar.
Senaste posten
Android10 bästa ansiktsbytesappar för Android och iOS -enhet
Windows OSHur man schemalägger Windows 10 för att tömma papperskorgen automatiskt
AndroidDe 10 bästa faktureringsapparna för Android -enheter för att få betalt snabbt
Windows OSDe 10 bästa GPU -riktmärken för din dator
Måste läsas
LinuxHur man installerar och konfigurerar XAMPP på Ubuntu Linux
LinuxUbuntu Communitheme - Ett nytt Ubuntu Community -tema
LinuxHur man installerar programvara från källkoden i ditt Linux -system
LinuxRedNotebook - En modern och gratis dagbok och journalprogramvara för Linux
Relaterade inlägg
Så här installerar och konfigurerar du Cockpit Web Console på Linux System
Hur man installerar och konfigurerar Yii PHP Framework på Ubuntu Linux
Hur man fixar W: Vissa indexfiler kunde inte ladda ner Fel i Ubuntu Linux
Så här installerar och konfigurerar du 1Password på Linux Desktop
Så här installerar du den senaste GNU Nano -textredigeraren på Linux -skrivbordet
Så här installerar du en ny Relic Infrastructure Agent i Linux -systemet
Detta kommando söker efter texten UUID i /etc/fstab fil med hjälp av awk -mönster. Det returnerar en kommentar från filen som vi inte är intresserade av. Kommandot nedan ser till att vi bara får de rader som börjar med UUID.
$ awk '/^UUID/ {print }' /etc/fstab
Det begränsar utmatningen till det första fältet. Så vi får bara UUID -numren.
35. Skriv ut Linux Kernel Image Version
Olika Linux -kärnbilder används av olika Linux -distributioner . Vi kan enkelt skriva ut den exakta kärnbild som vårt system bygger på att använda awk. Kolla in följande kommando för att se hur det fungerar i allmänhet.
$ uname -a | awk '{print }'
Vi har först utfärdat kommandot uname med -till alternativet och skickade sedan dessa data till awk. Sedan har vi extraherat versionsinformationen för kärnbilden med hjälp av awk.
36. Lägg till radnummer före rader
Användare kan stöta på textfiler som inte innehåller radnummer ganska ofta. Lyckligtvis kan du enkelt lägga till radnummer till en fil med hjälp av kommandot awk i Linux. Ta en närmare titt på exemplet nedan för att se hur detta fungerar i verkliga livet.
$ awk '{ print FNR '. 'Hem A-Z-kommandon 40 Praktiskt och användbart awk -kommando i Linux och BSD FörbiMehedi Hasan IA-Z-kommandonUtvalda 1271 7 ;next}{print}' test.txtINNEHÅLL
- Förstå AWK -program
- Praktiska exempel på awk Command i Linux
- 1. Skriv ut specifika fält från textutmatning
- 2. Skriv ut flera fält från textutmatning
- 3. Använd BEGIN -uttalanden
- 4. Använd SLUT -uttalanden
- 5. Sök med hjälp av mönster
- 6. Extrahera information från filer
- 7. Läs AWK -skript från källfilen
- 8. Ställ in inmatningsfältet
- 9. Skriv ut information baserat på skick
- 10. Skriv ut information genom att jämföra vanliga uttryck
- 11. Räkna det totala antalet rader i inmatning
- 12. Ställ in utmatningsfältavskiljare
- 13. Använda If Construct
- 14. Använda If-Else Constructs
- 15. Ställ in fältbredden
- 16. Ställ in inspelningsseparatorn
- 17. Utskriftsmiljövariabler
- 18. Utelämna vissa fält från utdata
- 19. Ta bort tomma linjer
- 20. Ta bort släpande blanksteg
- 21. Kontrollera antalet fält i varje rad
- 22. Verifiera aktuellt filnamn
- 23. Verifiera antalet bearbetade poster
- 24. Skriv ut det totala antalet tecken i en post
- 25. Skriv ut alla rader längre än en angiven längd
- 26. Skriv ut antalet rader, tecken och ord
- 27. Beräkna ordfrekvens
- 28. Byt namn på filer med AWK
- 29. Skriv ut ett fyrkantigt rot av ett nummer
- 30. Skriv ut logaritmen för ett tal
- 31. Skriv ut ett tals exponential
- 32. Generera slumpmässiga nummer med AWK
- 33. Färgkompilatorvarningar i rött
- 34. Skriv ut UUID -informationen för filsystemet
- 35. Skriv ut Linux Kernel Image Version
- 36. Lägg till radnummer före rader
- 37. Skriv ut en fil efter att innehållet har sorterats
- 38. Skriv ut den manuella sidan
- 39. Skriv ut hjälpsidan
- 40. Skriv ut versioninformation
- Avslutande tankar
AWK är ett kraftfullt> fullfjädrat programmeringsspråk . AWK får sitt namn från initialerna till dess författare - Aho, Weinberger och Kernighan. Awk -kommandot i Linux och andra Unix -system åberopar tolken som kör AWK -skript. Flera implementeringar av awk finns i de senaste systemen som bland annat gawk (GNU awk), mawk (Minimal awk) och nawk (New awk). Kolla in exemplen nedan om du vill behärska awk.
Förstå AWK -program
Program skrivna i awk består av regler, som helt enkelt är ett par mönster och handlingar. Mönstren är grupperade i en tandställning {}, och åtgärdsdelen utlöses när awk hittar texter som matchar mönstret. Även om awk utvecklades för att skriva enliners, kan erfarna användare enkelt skriva komplexa skript med det.
AWK-program är mycket användbara för storskalig filbehandling. Det identifierar textfält med specialtecken och separatorer. Det erbjuder också programmeringskonstruktioner på hög nivå som arrays och loopar. Så att skriva robusta program med vanlig awk är mycket genomförbart.
Praktiska exempel på awk Command i Linux
Administratörer använder normalt awk för datautvinning och rapportering tillsammans med andra typer av filmanipulationer. Nedan har vi diskuterat awk mer detaljerat. Följ kommandona noga och prova dem i din terminal för en fullständig förståelse.
1. Skriv ut specifika fält från textutmatning
Mest mycket använda Linux -kommandon visa sin produktion med olika fält. Normalt använder vi Linux cut -kommandot för att extrahera ett specifikt fält från sådana data. Kommandot nedan visar dig dock hur du gör detta med kommandot awk.
$ who | awk '{print $1}'Detta kommando visar bara det första fältet från utdata från who -kommandot. Så du får helt enkelt användarnamnen för alla loggade användare. Här, $ 1 representerar det första fältet. Du måste använda $ N om du vill extrahera det n: e fältet.
2. Skriv ut flera fält från textutmatning
Awk -tolken gör att vi kan skriva ut hur många fält som helst. Nedanstående exempel visar hur vi extraherar de två första fälten från utdata från who -kommandot.
$ who | awk '{print $1, $2}'Du kan också styra ordningen på utdatafälten. Följande exempel visar först den andra kolumnen som produceras av who -kommandot och sedan den första kolumnen i det andra fältet.
$ who | awk '{print $2, $1}'Lämna bara fältparametrarna ( $ N ) för att visa hela data.
3. Använd BEGIN -uttalanden
BEGIN -satsen tillåter användare att skriva ut viss känd information i utdata. Det används vanligtvis för att formatera utdata som genereras av awk. Syntaxen för detta uttalande visas nedan.
BEGIN { Actions} {ACTION}De åtgärder som bildar BEGIN -sektionen utlöses alltid. Sedan läser awk de återstående raderna en efter en och ser om något behöver göras.
$ who | awk 'BEGIN {print 'User From'} {print $1, $2}'Kommandot ovan kommer att märka de två utmatningsfälten som extraheras från who -kommandot.
4. Använd SLUT -uttalanden
Du kan också använda END -satsen för att se till att vissa åtgärder alltid utförs i slutet av din operation. Placera helt enkelt END -sektionen efter huvuduppsättningen.
$ who | awk 'BEGIN {print 'User From'} {print $1, $2} END {print '--COMPLETED--'}'Kommandot ovan kommer att lägga till den givna strängen i slutet av utdata.
5. Sök med hjälp av mönster
En stor del av awks arbete innebär mönstermatchning och regex. Som vi redan har diskuterat, söker awk efter mönster i varje inmatningsrad och utför bara åtgärden när en matchning utlöses. Våra tidigare regler bestod av endast handlingar. Nedan har vi illustrerat grunderna för mönstermatchning med hjälp av kommandot awk i Linux.
$ who | awk '/mary/ {print}'Detta kommando kommer att se om användaren mary för närvarande är inloggad eller inte. Det kommer att mata ut hela raden om någon matchning hittas.
6. Extrahera information från filer
Kommandot awk fungerar mycket bra med filer och kan användas för komplexa filbehandlingsuppgifter. Följande kommando illustrerar hur awk hanterar filer.
$ awk '/hello/ {print}' /usr/share/dict/american-englishDetta kommando söker efter mönstret 'hej' i den amerikansk-engelska ordlistfilen. Den finns på de flesta Linux-baserade distributioner . Således kan du enkelt prova awk -program på den här filen.
7. Läs AWK -skript från källfilen
Även om det är användbart att skriva enlinjeprogram, kan du också skriva stora program med awk helt. Du vill spara dem och köra ditt program med hjälp av källfilen.
$ awk -f script-file $ awk --file script-fileDe -f eller -fil alternativet låter oss ange programfilen. Du behöver dock inte använda citattecken (‘‘) inuti skriptfilen eftersom Linux-skalet inte tolkar programkoden på detta sätt.
8. Ställ in inmatningsfältet
En fältavskiljare är en avgränsare som delar inmatningsposten. Vi kan enkelt ange fältavskiljare att awk med hjälp av -F eller –Fältavskiljare alternativ. Kolla in kommandona nedan för att se hur detta fungerar.
$ echo 'This-is-a-simple-example' | awk -F - ' {print $1} ' $ echo 'This-is-a-simple-example' | awk --field-separator - ' {print $1} 'Det fungerar på samma sätt när man använder skriptfiler snarare än ett-linjers awk-kommando i Linux.
9. Skriv ut information baserat på skick
Vi har diskuterat kommandot Linux cut i en tidigare guide. Nu visar vi dig hur du extraherar information med hjälp av awk endast när vissa kriterier matchas. Vi kommer att använda samma testfil som vi använde i den guiden. Så gå dit och gör en kopia av test.txt fil.
$ awk '$4 > 50' test.txtDetta kommando kommer att skriva ut alla nationer från filen test.txt, som har mer än 50 miljoner invånare.
10. Skriv ut information genom att jämföra vanliga uttryck
Följande awk -kommando kontrollerar om det tredje fältet på en rad innehåller mönstret 'Lira' och skriver ut hela raden om en matchning hittas. Vi använder igen filen test.txt som används för att illustrera Linux cut -kommando . Så se till att du har den här filen innan du fortsätter.
$ awk '$3 ~ /Lira/' test.txtDu kan välja att bara skriva ut en viss del av en matchning om du vill.
11. Räkna det totala antalet rader i inmatning
Kommandot awk har många specialvariabler som gör att vi enkelt kan göra många avancerade saker. En sådan variabel är NR, som innehåller det aktuella radnumret.
$ awk 'END {print NR} ' test.txtDetta kommando kommer att mata ut hur många rader som finns i vår test.txt -fil. Den upprepas först över varje rad, och när den har nått END kommer den att skriva ut värdet på NR - som innehåller det totala antalet rader i det här fallet.
12. Ställ in utmatningsfältavskiljare
Tidigare har vi visat hur man väljer inmatningsfältavskiljare med -F eller –Fältavskiljare alternativ. Kommandot awk låter oss också ange utmatningsfältavskiljaren. Nedanstående exempel visar detta med hjälp av ett praktiskt exempel.
$ date | awk 'OFS='-' {print$2,$3,$6}'Detta kommando skriver ut det aktuella datumet med formatet dd-mm-åå. Kör datumprogrammet utan awk för att se hur standardutmatningen ser ut.
13. Använda If Construct
Som andra populära programmeringsspråk , awk ger också användare if-else-konstruktionerna. If -satsen i awk har syntaxen nedan.
if (expression) { first_action second_action }Motsvarande åtgärder utförs endast om det villkorliga uttrycket är sant. Nedanstående exempel visar detta med hjälp av vår referensfil test.txt .
$ awk '{ if ($4>100) print }' test.txtDu behöver inte behålla indragningen strikt.
14. Använda If-Else Constructs
Du kan konstruera användbara if-else-stegar med syntaxen nedan. De är användbara vid utformning av komplexa awk -skript som hanterar dynamisk data.
if (expression) first_action else second_action$ awk '{ if ($4>100) print; else print }' test.txtKommandot ovan kommer att skriva ut hela referensfilen eftersom det fjärde fältet inte är större än 100 för varje rad.
15. Ställ in fältbredden
Ibland är inmatningsdatan ganska rörig, och användare kan ha svårt att visualisera dem i sina rapporter. Lyckligtvis ger awk en kraftfull inbyggd variabel som kallas FIELDWIDTHS som gör att vi kan definiera en blankstegsseparerad lista med bredder.
$ echo 5675784464657 | awk 'BEGIN {FIELDWIDTHS= '3 4 5'} {print $1, $2, $3}'Det är mycket användbart vid analys av spridda data eftersom vi kan styra utmatningsfältets bredd exakt som vi vill.
16. Ställ in inspelningsseparatorn
RS eller Record Separator är en annan inbyggd variabel som gör att vi kan ange hur poster separeras. Låt oss först skapa en fil som visar hur denna awk -variabel fungerar.
$ cat new.txt Melinda James 23 New Hampshire (222) 466-1234 Daniel James 99 Phonenix Road (322) 677-3412$ awk 'BEGIN{FS=' '; RS=''} {print $1,$3}' new.txtDetta kommando kommer att analysera dokumentet och spotta ut namn och adress för de två personerna.
17. Utskriftsmiljövariabler
Kommandot awk i Linux gör att vi enkelt kan skriva ut miljövariabler med variabeln ENVIRON. Kommandot nedan visar hur du använder detta för att skriva ut innehållet i PATH -variabeln.
$ awk 'BEGIN{ print ENVIRON['PATH'] }'Du kan skriva ut innehållet i alla miljövariabler genom att ersätta ENVIRON -variabelns argument. Kommandot nedan skriver ut värdet på miljövariabeln HEM.
$ awk 'BEGIN{ print ENVIRON['HOME'] }'18. Utelämna vissa fält från utdata
Kommandot awk tillåter oss att utelämna specifika rader från vår produktion. Följande kommando visar detta med hjälp av vår referensfil test.txt .
$ awk -F':' '{$2=''; print}' test.txtDetta kommando kommer att utelämna den andra kolumnen i vår fil, som innehåller huvudstadsnamnet för varje land. Du kan också utelämna mer än ett fält, som visas i nästa kommando.
$ awk -F':' '{$2='';$3='';print}' test.txt19. Ta bort tomma linjer
Ibland kan data innehålla för många tomma rader. Du kan använda kommandot awk för att ta bort tomma rader ganska enkelt. Kolla in nästa kommando för att se hur det fungerar i praktiken.
$ awk '/^[ ]*$/{next}{print}' new.txtVi har tagit bort alla tomma rader från filen new.txt med ett enkelt reguljärt uttryck och en awk inbyggd kallas nästa.
20. Ta bort släpande blanksteg
Utdata från många Linux -kommandon innehåller efterföljande blanksteg. Vi kan använda kommandot awk i Linux för att ta bort sådana blanksteg som mellanslag och flikar. Kolla in kommandot nedan för att se hur du hanterar sådana problem med hjälp av awk.
$ awk '{sub(/[ ]*$/, '');print}' new.txt test.txtLägg till några efterföljande blanksteg i våra referensfiler och verifiera om awk tog bort dem framgångsrikt eller inte. Det gjorde detta framgångsrikt i min maskin.
21. Kontrollera antalet fält i varje rad
Vi kan enkelt kontrollera hur många fält som finns i en rad med hjälp av en enkel awk one-liner. Det finns många sätt att göra detta, men vi kommer att använda några av awks inbyggda variabler för denna uppgift. NR -variabeln ger oss radnumret och NF -variabeln anger antalet fält.
$ awk '{print NR,'-->',NF}' test.txtNu kan vi bekräfta hur många fält det finns per rad i vårt test.txt dokumentera. Eftersom varje rad i den här filen innehåller fem fält är vi säkra på att kommandot fungerar som förväntat.
22. Verifiera aktuellt filnamn
Awk -variabeln FILENAME används för att verifiera det aktuella inmatningsfilnamnet. Vi visar hur detta fungerar med ett enkelt exempel. Det kan dock vara användbart i situationer där filnamnet inte är känt uttryckligen eller om det finns mer än en inmatningsfil.
$ awk '{print FILENAME}' test.txt $ awk '{print FILENAME}' test.txt new.txtKommandona ovan skriver ut filnamnet awk arbetar på varje gång det behandlar en ny rad med inmatningsfiler.
23. Verifiera antalet bearbetade poster
Följande exempel visar hur vi kan verifiera antalet poster som behandlats av kommandot awk. Eftersom ett stort antal Linux -systemadministratörer använder awk för att generera rapporter är det mycket användbart för dem.
$ awk '{print 'Processing Record - ',NR;} END {print ' Total Records Processed:', NR;}' test.txtJag använder ofta detta awk -snutt för att ha en tydlig översikt över mina handlingar. Du kan enkelt justera den för att rymma nya idéer eller handlingar.
24. Skriv ut det totala antalet tecken i en post
Awk -språket ger en praktisk funktion som kallas length () som berättar hur många tecken som finns i en post. Det är mycket användbart i ett antal scenarier. Ta en snabb titt på följande exempel för att se hur detta fungerar.
$ echo 'A random text string...' | awk '{ print length($0); }'$ awk '{ print length($0); }' /etc/passwdKommandot ovan kommer att skriva ut det totala antalet tecken som finns på varje rad i inmatningssträngen eller filen.
25. Skriv ut alla rader längre än en angiven längd
Vi kan lägga till några villkor för kommandot ovan och göra det bara att skriva ut de rader som är större än en fördefinierad längd. Det är användbart när du redan har en uppfattning om längden på en specifik post.
$ echo 'A random text string...' | awk 'length($0) > 10'$ awk '{ length($0) > 5; }' /etc/passwdDu kan kasta in fler alternativ och/eller argument för att justera kommandot baserat på dina krav.
26. Skriv ut antalet rader, tecken och ord
Följande awk -kommando i Linux skriver ut antalet rader, tecken och ord i en given ingång. Den använder NR -variabeln samt grundläggande aritmetik för att utföra denna operation.
$ echo 'This is a input line...' | awk '{ w += NF; c += length + 1 } END { print NR, w, c }'Det visar att det finns 1 rad, 5 ord och exakt 24 tecken i inmatningssträngen.
27. Beräkna ordfrekvens
Vi kan kombinera associativa matriser och for -loop i awk för att beräkna ordfrekvensen för ett dokument. Följande kommando kan verka lite komplext, men det är ganska enkelt när du väl förstår de grundläggande konstruktionerna.
$ awk 'BEGIN {FS='[^a-zA-Z]+' } { for (i=1; i<=NF; i++) words[tolower($i)]++ } END { for (i in words) print i, words[i] }' test.txtOm du har problem med ett-liner-kodavsnittet, kopiera följande kod till en ny fil och kör den med källan.
$ cat > frequency.awk BEGIN { FS='[^a-zA-Z]+' } { for (i=1; i<=NF; i++) words[tolower($i)]++ } END { for (i in words) print i, words[i] }Kör den sedan med -f alternativ.
$ awk -f frequency.awk test.txt28. Byt namn på filer med AWK
Kommandot awk kan användas för att byta namn på alla filer som matchar vissa kriterier. Följande kommando illustrerar hur du använder awk för att döpa om alla .MP3 -filer i en katalog till .mp3 -filer.
$ touch {a,b,c,d,e}.MP3 $ ls *.MP3 | awk '{ printf('mv '%s' '%s' ', $0, tolower($0)) }' $ ls *.MP3 | awk '{ printf('mv '%s' '%s' ', $0, tolower($0)) }' | shFörst skapade vi några demofiler med .MP3 -tillägg. Det andra kommandot visar användaren vad som händer när bytet är lyckat. Slutligen byter det sista kommandot namnoperationen med mv -kommandot i Linux.
29. Skriv ut ett fyrkantigt rot av ett nummer
AWK erbjuder flera inbyggda funktioner för manipulering av siffror. En av dem är funktionen sqrt (). Det är en C-liknande funktion som returnerar kvadratroten för ett givet tal. Ta en snabb titt på nästa exempel för att se hur det fungerar i allmänhet.
$ awk 'BEGIN{ print sqrt(36); print sqrt(0); print sqrt(-16) }'Eftersom du inte kan bestämma kvadratroten för ett negativt tal, kommer utdata att visa ett speciellt nyckelord som heter 'nan' istället för sqrt (-12).
30. Skriv ut logaritmen för ett tal
Awk -funktionsloggen () ger den naturliga logaritmen för ett tal. Det fungerar dock bara med positiva siffror, så var medveten om att validera användarnas inmatning. Annars kan någon bryta dina awk -program och få opålitlig tillgång till systemresurser.
$ awk 'BEGIN{ print log(36); print log(0); print log(-16) }'Du bör se logaritmen 36 och verifiera att logaritmen 0 är oändligt och loggen med ett negativt värde är 'Not a Number' eller nan.
31. Skriv ut ett tals exponential
Den exponentiella os ett tal n ger värdet av e^n. Det används vanligtvis i awk -skript som handlar om stora siffror eller komplex aritmetisk logik. Vi kan generera exponentialen för ett tal med den inbyggda awk-funktionen exp ().
$ awk 'BEGIN{ print exp(30); print log(0); print exp(-16) }'Awk kan dock inte beräkna exponentiell för extremt stora tal. Du bör göra sådana beräkningar med programmeringsspråk på låg nivå som C och mata värdet till dina awk-skript.
32. Generera slumpmässiga nummer med AWK
Vi kan använda kommandot awk i Linux för att generera slumpmässiga nummer. Dessa nummer kommer att ligga i intervallet 0 till 1, men aldrig 0 eller 1. Du kan multiplicera ett fast värde med det resulterande talet för att få ett större slumpmässigt värde.
$ awk 'BEGIN{ print rand(); print rand()*99 }'Rand () -funktionen behöver inget argument. Dessutom är siffrorna som genereras av denna funktion inte exakt slumpmässiga utan snarare pseudoslumpmässiga. Dessutom är det ganska enkelt att förutsäga dessa siffror från körning till körning. Så du bör inte lita på dem för känsliga beräkningar.
33. Färgkompilatorvarningar i rött
Moderna Linux -kompilatorer kommer att kasta varningar om din kod inte upprätthåller språkstandarder eller har fel som inte stoppar programkörningen. Följande awk -kommando kommer att skriva ut varningsraderna som genereras av en kompilator i rött.
$ gcc -Wall main.c |& awk '/: warning:/{print 'x1B[01;31m' $0 'x1B[m';next;}{print}'Detta kommando är användbart om du vill specificera kompilatorvarningar specifikt. Du kan använda detta kommando med valfri kompilator än gcc, bara se till att ändra mönstret /: varning: / för att återspegla just den kompilatorn.
34. Skriv ut UUID -informationen för filsystemet
UUID eller Universellt unik identifierare är ett nummer som kan användas för att identifiera resurser som Linux -filsystemet . Vi kan helt enkelt skriva ut UUID -informationen i vårt filsystem med hjälp av följande Linux awk -kommando.
$ awk '/UUID/ {print $0}' /etc/fstabDetta kommando söker efter texten UUID i /etc/fstab fil med hjälp av awk -mönster. Det returnerar en kommentar från filen som vi inte är intresserade av. Kommandot nedan ser till att vi bara får de rader som börjar med UUID.
$ awk '/^UUID/ {print $1}' /etc/fstabDet begränsar utmatningen till det första fältet. Så vi får bara UUID -numren.
35. Skriv ut Linux Kernel Image Version
Olika Linux -kärnbilder används av olika Linux -distributioner . Vi kan enkelt skriva ut den exakta kärnbild som vårt system bygger på att använda awk. Kolla in följande kommando för att se hur det fungerar i allmänhet.
$ uname -a | awk '{print $3}'Vi har först utfärdat kommandot uname med -till alternativet och skickade sedan dessa data till awk. Sedan har vi extraherat versionsinformationen för kärnbilden med hjälp av awk.
36. Lägg till radnummer före rader
Användare kan stöta på textfiler som inte innehåller radnummer ganska ofta. Lyckligtvis kan du enkelt lägga till radnummer till en fil med hjälp av kommandot awk i Linux. Ta en närmare titt på exemplet nedan för att se hur detta fungerar i verkliga livet.
$ awk '{ print FNR '. ' $0 ;next}{print}' test.txtKommandot ovan lägger till ett radnummer före var och en av raderna i vår test.txt -referensfil. Den använder den inbyggda awk-variabeln FNR för att hantera detta.
37. Skriv ut en fil efter att innehållet har sorterats
Vi kan också använda awk för att skriva ut en sorterad lista över alla rader. Följande kommandon skriver ut namnet på alla länder i vår test.txt i sorterad ordning.
$ awk -F ':' '{ print $1 }' test.txt | sortNästa kommando kommer att skriva ut inloggningsnamnet för alla användare från /etc/passwd fil.
$ awk -F ':' '{ print $1 }' /etc/passwd | sortDu kan enkelt ändra sorteringsordningen genom att ändra sorteringskommandot.
38. Skriv ut den manuella sidan
Den manuella sidan innehåller detaljerad information om kommandot awk tillsammans med alla tillgängliga alternativ. Det är oerhört viktigt för människor som vill behärska awk -kommandot noggrant.
$ man awkOm du vill lära dig komplexa awk -funktioner kommer det här att vara till stor hjälp för dig. Läs den här dokumentationen när du har problem.
39. Skriv ut hjälpsidan
Hjälpsidan innehåller sammanfattad information om alla möjliga kommandoradsargument. Du kan använda hjälpguiden för awk med ett av följande kommandon.
$ awk -h $ awk --helpSe den här sidan om du vill ha en snabb översikt över alla tillgängliga alternativ för awk.
40. Skriv ut versioninformation
Versionsinformationen ger oss information om hur ett program byggs. Versionssidan för awk innehåller information som dess upphovsrätt, sammanställningsverktyg och så vidare. Du kan visa denna information med ett av följande awk -kommandon.
$ awk -V $ awk --versionAvslutande tankar
Kommandot awk i Linux tillåter oss att göra alla möjliga saker, inklusive filbehandling och systemunderhåll. Det ger ett brett utbud av funktioner för att hantera dagliga datoruppgifter ganska enkelt. Våra redaktörer har sammanställt denna guide med 40 användbara awk -kommandon som kan användas för textmanipulering eller administration. Eftersom AWK är ett fullvärdigt programmeringsspråk i sig, finns det flera sätt att göra samma jobb. Så undra inte varför vi gör vissa saker på ett annat sätt. Du kan alltid kurera dina egna recept baserat på din kompetens och erfarenhet. Lämna oss dina tankar, meddela oss om du har några frågor.
Dela med sig Facebook Twitter Pinterest WhatsApp ReddIt Telegram Viber
- Taggar
- Programmeringsverktyg
- Systemverktyg
7 KOMMENTARER
- Ramesh 24 april 2020 klockan 07:48
Vad är bäst sed eller awk?
Svar
- lauhub 6 januari 2021 Kl. 04:41
Båda är bäst:
- sed är användbart för enkla ersättnings-/utgåva -uppgifter och har vissa begränsningar när det gäller att programmera komplexa uppgifter (även om avancerade användare kan göra många saker)
- awk måste vara mer omfattande för enkla uppgifter men gör det möjligt att använda mer komplexa datastrukturer för mer komplex programmering.
Hur som helst, allt beror på dina behov och kunskap om dessa verktyg
Svar- DC 16 juli 2021 Kl. 09:17
Båda är funktionellt olika. sed är begränsad funktionalitet. Normalt används för inline hitta och ersätt strängredigerare.
Svar
awk används för datamanipulering och ger fler programmeringsfunktioner- Ahmed 16 april 2020 Klockan 13:24
Hej,
Svar
Exemplen är bra men det hade varit bättre om du också hade postat utdata efter exempel.
- Rubaiat Hossain 18 april 2020 Klockan 01:28
Tack, Ahmed för att du följer oss. Vi är dock rädda att att lägga till separata bilder för varje kommando kommer att göra guiden extremt lång och därför kan användare som läser detta från små skärmar som telefoner/surfplattor möta oönskad rullningsupplevelse.
Dessutom uppmuntrar vi våra läsare att tweak dessa awk-kommandon i Linux när du är på språng och prova dem från första hand. På så sätt behärskar du dem snabbare.
Svar- Stefan 6 april 2020 klockan 10:54
Utmärkta exempel. Tack för den här
Svar- Karan Grover 2 april 2020 Klockan 17:29
fina okej exempel
SvarLÄMNA ETT SVAR Avbryt svar
Kommentar: Ange din kommentar! Namn:* Ange ditt namn här E -post:* Du har angett en felaktig e -postadress! Ange din e -postadress här Webbplats:Spara mitt namn, mejl och webbplats i den här webbläsaren för nästa gång jag kommenterar.
Senaste posten
Android10 bästa ansiktsbytesappar för Android och iOS -enhet
Windows OSHur man schemalägger Windows 10 för att tömma papperskorgen automatiskt
AndroidDe 10 bästa faktureringsapparna för Android -enheter för att få betalt snabbt
Windows OSDe 10 bästa GPU -riktmärken för din dator
Måste läsas
LinuxHur man installerar och konfigurerar XAMPP på Ubuntu Linux
LinuxUbuntu Communitheme - Ett nytt Ubuntu Community -tema
LinuxHur man installerar programvara från källkoden i ditt Linux -system
LinuxRedNotebook - En modern och gratis dagbok och journalprogramvara för Linux
Relaterade inlägg
Så här installerar och konfigurerar du Cockpit Web Console på Linux System
Hur man installerar och konfigurerar Yii PHP Framework på Ubuntu Linux
Hur man fixar W: Vissa indexfiler kunde inte ladda ner Fel i Ubuntu Linux
Så här installerar och konfigurerar du 1Password på Linux Desktop
Så här installerar du den senaste GNU Nano -textredigeraren på Linux -skrivbordet
Så här installerar du en ny Relic Infrastructure Agent i Linux -systemet
Kommandot ovan lägger till ett radnummer före var och en av raderna i vår test.txt -referensfil. Den använder den inbyggda awk-variabeln FNR för att hantera detta.
37. Skriv ut en fil efter att innehållet har sorterats
Vi kan också använda awk för att skriva ut en sorterad lista över alla rader. Följande kommandon skriver ut namnet på alla länder i vår test.txt i sorterad ordning.
$ awk -F ':' '{ print }' test.txt | sort
Nästa kommando kommer att skriva ut inloggningsnamnet för alla användare från /etc/passwd fil.
$ awk -F ':' '{ print }' /etc/passwd | sort
Du kan enkelt ändra sorteringsordningen genom att ändra sorteringskommandot.
38. Skriv ut den manuella sidan
Den manuella sidan innehåller detaljerad information om kommandot awk tillsammans med alla tillgängliga alternativ. Det är oerhört viktigt för människor som vill behärska awk -kommandot noggrant.
$ man awk
Om du vill lära dig komplexa awk -funktioner kommer det här att vara till stor hjälp för dig. Läs den här dokumentationen när du har problem.
39. Skriv ut hjälpsidan
Hjälpsidan innehåller sammanfattad information om alla möjliga kommandoradsargument. Du kan använda hjälpguiden för awk med ett av följande kommandon.
$ awk -h $ awk --help
Se den här sidan om du vill ha en snabb översikt över alla tillgängliga alternativ för awk.
40. Skriv ut versioninformation
Versionsinformationen ger oss information om hur ett program byggs. Versionssidan för awk innehåller information som dess upphovsrätt, sammanställningsverktyg och så vidare. Du kan visa denna information med ett av följande awk -kommandon.
$ awk -V $ awk --version
Avslutande tankar
Kommandot awk i Linux tillåter oss att göra alla möjliga saker, inklusive filbehandling och systemunderhåll. Det ger ett brett utbud av funktioner för att hantera dagliga datoruppgifter ganska enkelt. Våra redaktörer har sammanställt denna guide med 40 användbara awk -kommandon som kan användas för textmanipulering eller administration. Eftersom AWK är ett fullvärdigt programmeringsspråk i sig, finns det flera sätt att göra samma jobb. Så undra inte varför vi gör vissa saker på ett annat sätt. Du kan alltid kurera dina egna recept baserat på din kompetens och erfarenhet. Lämna oss dina tankar, meddela oss om du har några frågor.
- Taggar
- Programmeringsverktyg
- Systemverktyg
7 KOMMENTARER
- Ramesh 24 april 2020 klockan 07:48
Vad är bäst sed eller awk?
Svar- lauhub 6 januari 2021 Kl. 04:41
Båda är bäst:
varför använder vi vlookup i Excel
- sed är användbart för enkla ersättnings-/utgåva -uppgifter och har vissa begränsningar när det gäller att programmera komplexa uppgifter (även om avancerade användare kan göra många saker)
- awk måste vara mer omfattande för enkla uppgifter men gör det möjligt att använda mer komplexa datastrukturer för mer komplex programmering.
Hur som helst, allt beror på dina behov och kunskap om dessa verktyg
Svar - DC 16 juli 2021 Kl. 09:17
Båda är funktionellt olika. sed är begränsad funktionalitet. Normalt används för inline hitta och ersätt strängredigerare.
Svar
awk används för datamanipulering och ger fler programmeringsfunktioner
- lauhub 6 januari 2021 Kl. 04:41
- Ahmed 16 april 2020 Klockan 13:24
Hej,
Svar
Exemplen är bra men det hade varit bättre om du också hade postat utdata efter exempel.- Rubaiat Hossain 18 april 2020 Klockan 01:28
Tack, Ahmed för att du följer oss. Vi är dock rädda att att lägga till separata bilder för varje kommando kommer att göra guiden extremt lång och därför kan användare som läser detta från små skärmar som telefoner/surfplattor möta oönskad rullningsupplevelse.
Dessutom uppmuntrar vi våra läsare att tweak dessa awk-kommandon i Linux när du är på språng och prova dem från första hand. På så sätt behärskar du dem snabbare.
Svar
- Rubaiat Hossain 18 april 2020 Klockan 01:28
- Stefan 6 april 2020 klockan 10:54
Utmärkta exempel. Tack för den här
Svar - Karan Grover 2 april 2020 Klockan 17:29
fina okej exempel
Svar
LÄMNA ETT SVAR Avbryt svar
Kommentar: Ange din kommentar! Namn:* Ange ditt namn här E -post:* Du har angett en felaktig e -postadress! Ange din e -postadress här Webbplats:Spara mitt namn, mejl och webbplats i den här webbläsaren för nästa gång jag kommenterar.