A-Z-Kommandon

40 Praktiskt och användbart awk -kommando i Linux och BSD

40 Practical Useful Awk Command Linux

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

  1. Förstå AWK -program
  2. Praktiska exempel på awk Command i Linux
    1. 1. Skriv ut specifika fält från textutmatning
    2. 2. Skriv ut flera fält från textutmatning
    3. 3. Använd BEGIN -uttalanden
    4. 4. Använd SLUT -uttalanden
    5. 5. Sök med hjälp av mönster
    6. 6. Extrahera information från filer
    7. 7. Läs AWK -skript från källfilen
    8. 8. Ställ in inmatningsfältet
    9. 9. Skriv ut information baserat på skick
    10. 10. Skriv ut information genom att jämföra vanliga uttryck
    11. 11. Räkna det totala antalet rader i inmatning
    12. 12. Ställ in utmatningsfältavskiljare
    13. 13. Använda If Construct
    14. 14. Använda If-Else Constructs
    15. 15. Ställ in fältbredden
    16. 16. Ställ in inspelningsseparatorn
    17. 17. Utskriftsmiljövariabler
    18. 18. Utelämna vissa fält från utdata
    19. 19. Ta bort tomma linjer
    20. 20. Ta bort släpande blanksteg
    21. 21. Kontrollera antalet fält i varje rad
    22. 22. Verifiera aktuellt filnamn
    23. 23. Verifiera antalet bearbetade poster
    24. 24. Skriv ut det totala antalet tecken i en post
    25. 25. Skriv ut alla rader längre än en angiven längd
    26. 26. Skriv ut antalet rader, tecken och ord
    27. 27. Beräkna ordfrekvens
    28. 28. Byt namn på filer med AWK
    29. 29. Skriv ut ett fyrkantigt rot av ett nummer
    30. 30. Skriv ut logaritmen för ett tal
    31. 31. Skriv ut ett tals exponential
    32. 32. Generera slumpmässiga nummer med AWK
    33. 33. Färgkompilatorvarningar i rött
    34. 34. Skriv ut UUID -informationen för filsystemet
    35. 35. Skriv ut Linux Kernel Image Version
    36. 36. Lägg till radnummer före rader
    37. 37. Skriv ut en fil efter att innehållet har sorterats
    38. 38. Skriv ut den manuella sidan
    39. 39. Skriv ut hjälpsidan
    40. 40. Skriv ut versioninformation
  3. 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 -kommando i Linux





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.

awk mönster sökning

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.

fältbredd i awk

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.

antal bearbetade rader i awk

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

  1. Förstå AWK -program
  2. Praktiska exempel på awk Command i Linux
    1. 1. Skriv ut specifika fält från textutmatning
    2. 2. Skriv ut flera fält från textutmatning
    3. 3. Använd BEGIN -uttalanden
    4. 4. Använd SLUT -uttalanden
    5. 5. Sök med hjälp av mönster
    6. 6. Extrahera information från filer
    7. 7. Läs AWK -skript från källfilen
    8. 8. Ställ in inmatningsfältet
    9. 9. Skriv ut information baserat på skick
    10. 10. Skriv ut information genom att jämföra vanliga uttryck
    11. 11. Räkna det totala antalet rader i inmatning
    12. 12. Ställ in utmatningsfältavskiljare
    13. 13. Använda If Construct
    14. 14. Använda If-Else Constructs
    15. 15. Ställ in fältbredden
    16. 16. Ställ in inspelningsseparatorn
    17. 17. Utskriftsmiljövariabler
    18. 18. Utelämna vissa fält från utdata
    19. 19. Ta bort tomma linjer
    20. 20. Ta bort släpande blanksteg
    21. 21. Kontrollera antalet fält i varje rad
    22. 22. Verifiera aktuellt filnamn
    23. 23. Verifiera antalet bearbetade poster
    24. 24. Skriv ut det totala antalet tecken i en post
    25. 25. Skriv ut alla rader längre än en angiven längd
    26. 26. Skriv ut antalet rader, tecken och ord
    27. 27. Beräkna ordfrekvens
    28. 28. Byt namn på filer med AWK
    29. 29. Skriv ut ett fyrkantigt rot av ett nummer
    30. 30. Skriv ut logaritmen för ett tal
    31. 31. Skriv ut ett tals exponential
    32. 32. Generera slumpmässiga nummer med AWK
    33. 33. Färgkompilatorvarningar i rött
    34. 34. Skriv ut UUID -informationen för filsystemet
    35. 35. Skriv ut Linux Kernel Image Version
    36. 36. Lägg till radnummer före rader
    37. 37. Skriv ut en fil efter att innehållet har sorterats
    38. 38. Skriv ut den manuella sidan
    39. 39. Skriv ut hjälpsidan
    40. 40. Skriv ut versioninformation
  3. 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 -kommando i Linux

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-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.

awk mönster sökning

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 $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.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 '$3 ~ /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$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.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 ($4>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.

$ 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.

fältbredd i awk

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.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':' '{$2=''; 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':' '{$2='';$3='';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.

antal bearbetade rader i awk

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/passwd

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($0) > 10'
$ awk '{ length($0) > 5; }' /etc/passwd

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'
', $0, tolower($0)) }' $ ls *.MP3 | awk '{ printf('mv '%s' '%s'
', $0, tolower($0)) }' | sh

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).

sqrt -funktion i Linux awk -kommandot

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/fstab

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 $1}' /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 $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.txt

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.

lägg till radnummer med kommandot awk

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 | sort

Nästa kommando kommer att skriva ut inloggningsnamnet för alla användare från /etc/passwd fil.

$ awk -F ':' '{ print $1 }' /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
Dela med sig Facebook Twitter Pinterest WhatsApp ReddIt Telegram Viber

    7 KOMMENTARER

    1. 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.
        awk används för datamanipulering och ger fler programmeringsfunktioner

        Svar
    2. Ahmed 16 april 2020 Klockan 13:24

      Hej,
      Exemplen är bra men det hade varit bättre om du också hade postat utdata efter exempel.

      Svar
      • 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
    3. Stefan 6 april 2020 klockan 10:54

      Utmärkta exempel. Tack för den här

      Svar
    4. 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.

    spot_img

    Senaste posten

    Android

    10 bästa ansiktsbytesappar för Android och iOS -enhet

    Windows OS

    Hur man schemalägger Windows 10 för att tömma papperskorgen automatiskt

    Android

    De 10 bästa faktureringsapparna för Android -enheter för att få betalt snabbt

    Windows OS

    De 10 bästa GPU -riktmärken för din dator

    Måste läsas

    Linux

    Hur man installerar och konfigurerar XAMPP på Ubuntu Linux

    Linux

    Ubuntu Communitheme - Ett nytt Ubuntu Community -tema

    Linux

    Hur man installerar programvara från källkoden i ditt Linux -system

    Linux

    RedNotebook - 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

    INNEHÅLL

    1. Förstå AWK -program
    2. Praktiska exempel på awk Command i Linux
      1. 1. Skriv ut specifika fält från textutmatning
      2. 2. Skriv ut flera fält från textutmatning
      3. 3. Använd BEGIN -uttalanden
      4. 4. Använd SLUT -uttalanden
      5. 5. Sök med hjälp av mönster
      6. 6. Extrahera information från filer
      7. 7. Läs AWK -skript från källfilen
      8. 8. Ställ in inmatningsfältet
      9. 9. Skriv ut information baserat på skick
      10. 10. Skriv ut information genom att jämföra vanliga uttryck
      11. 11. Räkna det totala antalet rader i inmatning
      12. 12. Ställ in utmatningsfältavskiljare
      13. 13. Använda If Construct
      14. 14. Använda If-Else Constructs
      15. 15. Ställ in fältbredden
      16. 16. Ställ in inspelningsseparatorn
      17. 17. Utskriftsmiljövariabler
      18. 18. Utelämna vissa fält från utdata
      19. 19. Ta bort tomma linjer
      20. 20. Ta bort släpande blanksteg
      21. 21. Kontrollera antalet fält i varje rad
      22. 22. Verifiera aktuellt filnamn
      23. 23. Verifiera antalet bearbetade poster
      24. 24. Skriv ut det totala antalet tecken i en post
      25. 25. Skriv ut alla rader längre än en angiven längd
      26. 26. Skriv ut antalet rader, tecken och ord
      27. 27. Beräkna ordfrekvens
      28. 28. Byt namn på filer med AWK
      29. 29. Skriv ut ett fyrkantigt rot av ett nummer
      30. 30. Skriv ut logaritmen för ett tal
      31. 31. Skriv ut ett tals exponential
      32. 32. Generera slumpmässiga nummer med AWK
      33. 33. Färgkompilatorvarningar i rött
      34. 34. Skriv ut UUID -informationen för filsystemet
      35. 35. Skriv ut Linux Kernel Image Version
      36. 36. Lägg till radnummer före rader
      37. 37. Skriv ut en fil efter att innehållet har sorterats
      38. 38. Skriv ut den manuella sidan
      39. 39. Skriv ut hjälpsidan
      40. 40. Skriv ut versioninformation
    3. 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 -kommando i Linux

    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-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.

    awk mönster sökning

    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 $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.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 '$3 ~ /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$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.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 ($4>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.

    $ 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.

    fältbredd i awk

    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.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':' '{$2=''; 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':' '{$2='';$3='';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.

    antal bearbetade rader i awk

    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/passwd

    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($0) > 10'
    $ awk '{ length($0) > 5; }' /etc/passwd

    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'
    ', $0, tolower($0)) }' $ ls *.MP3 | awk '{ printf('mv '%s' '%s'
    ', $0, tolower($0)) }' | sh

    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).

    sqrt -funktion i Linux awk -kommandot

    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/fstab

    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 $1}' /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 $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.txt

    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.

    lägg till radnummer med kommandot awk

    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 | sort

    Nästa kommando kommer att skriva ut inloggningsnamnet för alla användare från /etc/passwd fil.

    $ awk -F ':' '{ print $1 }' /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
    Dela med sig Facebook Twitter Pinterest WhatsApp ReddIt Telegram Viber

      7 KOMMENTARER

      1. 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.
          awk används för datamanipulering och ger fler programmeringsfunktioner

          Svar
      2. Ahmed 16 april 2020 Klockan 13:24

        Hej,
        Exemplen är bra men det hade varit bättre om du också hade postat utdata efter exempel.

        Svar
        • 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
      3. Stefan 6 april 2020 klockan 10:54

        Utmärkta exempel. Tack för den här

        Svar
      4. 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.

      spot_img

      Senaste posten

      Android

      10 bästa ansiktsbytesappar för Android och iOS -enhet

      Windows OS

      Hur man schemalägger Windows 10 för att tömma papperskorgen automatiskt

      Android

      De 10 bästa faktureringsapparna för Android -enheter för att få betalt snabbt

      Windows OS

      De 10 bästa GPU -riktmärken för din dator

      Måste läsas

      Linux

      Hur man installerar och konfigurerar XAMPP på Ubuntu Linux

      Linux

      Ubuntu Communitheme - Ett nytt Ubuntu Community -tema

      Linux

      Hur man installerar programvara från källkoden i ditt Linux -system

      Linux

      RedNotebook - 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

      ); }' /etc/passwd

      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

      INNEHÅLL

      1. Förstå AWK -program
      2. Praktiska exempel på awk Command i Linux
        1. 1. Skriv ut specifika fält från textutmatning
        2. 2. Skriv ut flera fält från textutmatning
        3. 3. Använd BEGIN -uttalanden
        4. 4. Använd SLUT -uttalanden
        5. 5. Sök med hjälp av mönster
        6. 6. Extrahera information från filer
        7. 7. Läs AWK -skript från källfilen
        8. 8. Ställ in inmatningsfältet
        9. 9. Skriv ut information baserat på skick
        10. 10. Skriv ut information genom att jämföra vanliga uttryck
        11. 11. Räkna det totala antalet rader i inmatning
        12. 12. Ställ in utmatningsfältavskiljare
        13. 13. Använda If Construct
        14. 14. Använda If-Else Constructs
        15. 15. Ställ in fältbredden
        16. 16. Ställ in inspelningsseparatorn
        17. 17. Utskriftsmiljövariabler
        18. 18. Utelämna vissa fält från utdata
        19. 19. Ta bort tomma linjer
        20. 20. Ta bort släpande blanksteg
        21. 21. Kontrollera antalet fält i varje rad
        22. 22. Verifiera aktuellt filnamn
        23. 23. Verifiera antalet bearbetade poster
        24. 24. Skriv ut det totala antalet tecken i en post
        25. 25. Skriv ut alla rader längre än en angiven längd
        26. 26. Skriv ut antalet rader, tecken och ord
        27. 27. Beräkna ordfrekvens
        28. 28. Byt namn på filer med AWK
        29. 29. Skriv ut ett fyrkantigt rot av ett nummer
        30. 30. Skriv ut logaritmen för ett tal
        31. 31. Skriv ut ett tals exponential
        32. 32. Generera slumpmässiga nummer med AWK
        33. 33. Färgkompilatorvarningar i rött
        34. 34. Skriv ut UUID -informationen för filsystemet
        35. 35. Skriv ut Linux Kernel Image Version
        36. 36. Lägg till radnummer före rader
        37. 37. Skriv ut en fil efter att innehållet har sorterats
        38. 38. Skriv ut den manuella sidan
        39. 39. Skriv ut hjälpsidan
        40. 40. Skriv ut versioninformation
      3. 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 -kommando i Linux

      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-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.

      awk mönster sökning

      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 $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.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 '$3 ~ /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$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.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 ($4>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.

      $ 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.

      fältbredd i awk

      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.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':' '{$2=''; 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':' '{$2='';$3='';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.

      antal bearbetade rader i awk

      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/passwd

      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($0) > 10'
      $ awk '{ length($0) > 5; }' /etc/passwd

      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'
      ', $0, tolower($0)) }' $ ls *.MP3 | awk '{ printf('mv '%s' '%s'
      ', $0, tolower($0)) }' | sh

      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).

      sqrt -funktion i Linux awk -kommandot

      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/fstab

      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 $1}' /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 $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.txt

      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.

      lägg till radnummer med kommandot awk

      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 | sort

      Nästa kommando kommer att skriva ut inloggningsnamnet för alla användare från /etc/passwd fil.

      $ awk -F ':' '{ print $1 }' /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
      Dela med sig Facebook Twitter Pinterest WhatsApp ReddIt Telegram Viber

        7 KOMMENTARER

        1. 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.
            awk används för datamanipulering och ger fler programmeringsfunktioner

            Svar
        2. Ahmed 16 april 2020 Klockan 13:24

          Hej,
          Exemplen är bra men det hade varit bättre om du också hade postat utdata efter exempel.

          Svar
          • 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
        3. Stefan 6 april 2020 klockan 10:54

          Utmärkta exempel. Tack för den här

          Svar
        4. 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.

        spot_img

        Senaste posten

        Android

        10 bästa ansiktsbytesappar för Android och iOS -enhet

        Windows OS

        Hur man schemalägger Windows 10 för att tömma papperskorgen automatiskt

        Android

        De 10 bästa faktureringsapparna för Android -enheter för att få betalt snabbt

        Windows OS

        De 10 bästa GPU -riktmärken för din dator

        Måste läsas

        Linux

        Hur man installerar och konfigurerar XAMPP på Ubuntu Linux

        Linux

        Ubuntu Communitheme - Ett nytt Ubuntu Community -tema

        Linux

        Hur man installerar programvara från källkoden i ditt Linux -system

        Linux

        RedNotebook - 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

        ) > 10'
        $ 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

        INNEHÅLL

        1. Förstå AWK -program
        2. Praktiska exempel på awk Command i Linux
          1. 1. Skriv ut specifika fält från textutmatning
          2. 2. Skriv ut flera fält från textutmatning
          3. 3. Använd BEGIN -uttalanden
          4. 4. Använd SLUT -uttalanden
          5. 5. Sök med hjälp av mönster
          6. 6. Extrahera information från filer
          7. 7. Läs AWK -skript från källfilen
          8. 8. Ställ in inmatningsfältet
          9. 9. Skriv ut information baserat på skick
          10. 10. Skriv ut information genom att jämföra vanliga uttryck
          11. 11. Räkna det totala antalet rader i inmatning
          12. 12. Ställ in utmatningsfältavskiljare
          13. 13. Använda If Construct
          14. 14. Använda If-Else Constructs
          15. 15. Ställ in fältbredden
          16. 16. Ställ in inspelningsseparatorn
          17. 17. Utskriftsmiljövariabler
          18. 18. Utelämna vissa fält från utdata
          19. 19. Ta bort tomma linjer
          20. 20. Ta bort släpande blanksteg
          21. 21. Kontrollera antalet fält i varje rad
          22. 22. Verifiera aktuellt filnamn
          23. 23. Verifiera antalet bearbetade poster
          24. 24. Skriv ut det totala antalet tecken i en post
          25. 25. Skriv ut alla rader längre än en angiven längd
          26. 26. Skriv ut antalet rader, tecken och ord
          27. 27. Beräkna ordfrekvens
          28. 28. Byt namn på filer med AWK
          29. 29. Skriv ut ett fyrkantigt rot av ett nummer
          30. 30. Skriv ut logaritmen för ett tal
          31. 31. Skriv ut ett tals exponential
          32. 32. Generera slumpmässiga nummer med AWK
          33. 33. Färgkompilatorvarningar i rött
          34. 34. Skriv ut UUID -informationen för filsystemet
          35. 35. Skriv ut Linux Kernel Image Version
          36. 36. Lägg till radnummer före rader
          37. 37. Skriv ut en fil efter att innehållet har sorterats
          38. 38. Skriv ut den manuella sidan
          39. 39. Skriv ut hjälpsidan
          40. 40. Skriv ut versioninformation
        3. 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 -kommando i Linux

        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-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.

        awk mönster sökning

        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 $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.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 '$3 ~ /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$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.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 ($4>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.

        $ 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.

        fältbredd i awk

        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.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':' '{$2=''; 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':' '{$2='';$3='';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.

        antal bearbetade rader i awk

        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/passwd

        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($0) > 10'
        $ awk '{ length($0) > 5; }' /etc/passwd

        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'
        ', $0, tolower($0)) }' $ ls *.MP3 | awk '{ printf('mv '%s' '%s'
        ', $0, tolower($0)) }' | sh

        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).

        sqrt -funktion i Linux awk -kommandot

        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/fstab

        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 $1}' /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 $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.txt

        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.

        lägg till radnummer med kommandot awk

        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 | sort

        Nästa kommando kommer att skriva ut inloggningsnamnet för alla användare från /etc/passwd fil.

        $ awk -F ':' '{ print $1 }' /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
        Dela med sig Facebook Twitter Pinterest WhatsApp ReddIt Telegram Viber

          7 KOMMENTARER

          1. 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.
              awk används för datamanipulering och ger fler programmeringsfunktioner

              Svar
          2. Ahmed 16 april 2020 Klockan 13:24

            Hej,
            Exemplen är bra men det hade varit bättre om du också hade postat utdata efter exempel.

            Svar
            • 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
          3. Stefan 6 april 2020 klockan 10:54

            Utmärkta exempel. Tack för den här

            Svar
          4. 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.

          spot_img

          Senaste posten

          Android

          10 bästa ansiktsbytesappar för Android och iOS -enhet

          Windows OS

          Hur man schemalägger Windows 10 för att tömma papperskorgen automatiskt

          Android

          De 10 bästa faktureringsapparna för Android -enheter för att få betalt snabbt

          Windows OS

          De 10 bästa GPU -riktmärken för din dator

          Måste läsas

          Linux

          Hur man installerar och konfigurerar XAMPP på Ubuntu Linux

          Linux

          Ubuntu Communitheme - Ett nytt Ubuntu Community -tema

          Linux

          Hur man installerar programvara från källkoden i ditt Linux -system

          Linux

          RedNotebook - 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

          ) > 5; }' /etc/passwd

          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

          INNEHÅLL

          1. Förstå AWK -program
          2. Praktiska exempel på awk Command i Linux
            1. 1. Skriv ut specifika fält från textutmatning
            2. 2. Skriv ut flera fält från textutmatning
            3. 3. Använd BEGIN -uttalanden
            4. 4. Använd SLUT -uttalanden
            5. 5. Sök med hjälp av mönster
            6. 6. Extrahera information från filer
            7. 7. Läs AWK -skript från källfilen
            8. 8. Ställ in inmatningsfältet
            9. 9. Skriv ut information baserat på skick
            10. 10. Skriv ut information genom att jämföra vanliga uttryck
            11. 11. Räkna det totala antalet rader i inmatning
            12. 12. Ställ in utmatningsfältavskiljare
            13. 13. Använda If Construct
            14. 14. Använda If-Else Constructs
            15. 15. Ställ in fältbredden
            16. 16. Ställ in inspelningsseparatorn
            17. 17. Utskriftsmiljövariabler
            18. 18. Utelämna vissa fält från utdata
            19. 19. Ta bort tomma linjer
            20. 20. Ta bort släpande blanksteg
            21. 21. Kontrollera antalet fält i varje rad
            22. 22. Verifiera aktuellt filnamn
            23. 23. Verifiera antalet bearbetade poster
            24. 24. Skriv ut det totala antalet tecken i en post
            25. 25. Skriv ut alla rader längre än en angiven längd
            26. 26. Skriv ut antalet rader, tecken och ord
            27. 27. Beräkna ordfrekvens
            28. 28. Byt namn på filer med AWK
            29. 29. Skriv ut ett fyrkantigt rot av ett nummer
            30. 30. Skriv ut logaritmen för ett tal
            31. 31. Skriv ut ett tals exponential
            32. 32. Generera slumpmässiga nummer med AWK
            33. 33. Färgkompilatorvarningar i rött
            34. 34. Skriv ut UUID -informationen för filsystemet
            35. 35. Skriv ut Linux Kernel Image Version
            36. 36. Lägg till radnummer före rader
            37. 37. Skriv ut en fil efter att innehållet har sorterats
            38. 38. Skriv ut den manuella sidan
            39. 39. Skriv ut hjälpsidan
            40. 40. Skriv ut versioninformation
          3. 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 -kommando i Linux

          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-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.

          awk mönster sökning

          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 $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.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 '$3 ~ /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$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.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 ($4>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.

          $ 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.

          fältbredd i awk

          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.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':' '{$2=''; 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':' '{$2='';$3='';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.

          antal bearbetade rader i awk

          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/passwd

          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($0) > 10'
          $ awk '{ length($0) > 5; }' /etc/passwd

          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'
          ', $0, tolower($0)) }' $ ls *.MP3 | awk '{ printf('mv '%s' '%s'
          ', $0, tolower($0)) }' | sh

          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).

          sqrt -funktion i Linux awk -kommandot

          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/fstab

          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 $1}' /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 $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.txt

          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.

          lägg till radnummer med kommandot awk

          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 | sort

          Nästa kommando kommer att skriva ut inloggningsnamnet för alla användare från /etc/passwd fil.

          $ awk -F ':' '{ print $1 }' /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
          Dela med sig Facebook Twitter Pinterest WhatsApp ReddIt Telegram Viber

            7 KOMMENTARER

            1. 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.
                awk används för datamanipulering och ger fler programmeringsfunktioner

                Svar
            2. Ahmed 16 april 2020 Klockan 13:24

              Hej,
              Exemplen är bra men det hade varit bättre om du också hade postat utdata efter exempel.

              Svar
              • 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
            3. Stefan 6 april 2020 klockan 10:54

              Utmärkta exempel. Tack för den här

              Svar
            4. 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.

            spot_img

            Senaste posten

            Android

            10 bästa ansiktsbytesappar för Android och iOS -enhet

            Windows OS

            Hur man schemalägger Windows 10 för att tömma papperskorgen automatiskt

            Android

            De 10 bästa faktureringsapparna för Android -enheter för att få betalt snabbt

            Windows OS

            De 10 bästa GPU -riktmärken för din dator

            Måste läsas

            Linux

            Hur man installerar och konfigurerar XAMPP på Ubuntu Linux

            Linux

            Ubuntu Communitheme - Ett nytt Ubuntu Community -tema

            Linux

            Hur man installerar programvara från källkoden i ditt Linux -system

            Linux

            RedNotebook - 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

            , tolower(
            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

            1. Förstå AWK -program
            2. Praktiska exempel på awk Command i Linux
              1. 1. Skriv ut specifika fält från textutmatning
              2. 2. Skriv ut flera fält från textutmatning
              3. 3. Använd BEGIN -uttalanden
              4. 4. Använd SLUT -uttalanden
              5. 5. Sök med hjälp av mönster
              6. 6. Extrahera information från filer
              7. 7. Läs AWK -skript från källfilen
              8. 8. Ställ in inmatningsfältet
              9. 9. Skriv ut information baserat på skick
              10. 10. Skriv ut information genom att jämföra vanliga uttryck
              11. 11. Räkna det totala antalet rader i inmatning
              12. 12. Ställ in utmatningsfältavskiljare
              13. 13. Använda If Construct
              14. 14. Använda If-Else Constructs
              15. 15. Ställ in fältbredden
              16. 16. Ställ in inspelningsseparatorn
              17. 17. Utskriftsmiljövariabler
              18. 18. Utelämna vissa fält från utdata
              19. 19. Ta bort tomma linjer
              20. 20. Ta bort släpande blanksteg
              21. 21. Kontrollera antalet fält i varje rad
              22. 22. Verifiera aktuellt filnamn
              23. 23. Verifiera antalet bearbetade poster
              24. 24. Skriv ut det totala antalet tecken i en post
              25. 25. Skriv ut alla rader längre än en angiven längd
              26. 26. Skriv ut antalet rader, tecken och ord
              27. 27. Beräkna ordfrekvens
              28. 28. Byt namn på filer med AWK
              29. 29. Skriv ut ett fyrkantigt rot av ett nummer
              30. 30. Skriv ut logaritmen för ett tal
              31. 31. Skriv ut ett tals exponential
              32. 32. Generera slumpmässiga nummer med AWK
              33. 33. Färgkompilatorvarningar i rött
              34. 34. Skriv ut UUID -informationen för filsystemet
              35. 35. Skriv ut Linux Kernel Image Version
              36. 36. Lägg till radnummer före rader
              37. 37. Skriv ut en fil efter att innehållet har sorterats
              38. 38. Skriv ut den manuella sidan
              39. 39. Skriv ut hjälpsidan
              40. 40. Skriv ut versioninformation
            3. 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 -kommando i Linux

            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-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.

            awk mönster sökning

            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 $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.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 '$3 ~ /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$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.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 ($4>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.

            $ 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.

            fältbredd i awk

            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.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':' '{$2=''; 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':' '{$2='';$3='';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.

            antal bearbetade rader i awk

            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/passwd

            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($0) > 10'
            $ awk '{ length($0) > 5; }' /etc/passwd

            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'
            ', $0, tolower($0)) }' $ ls *.MP3 | awk '{ printf('mv '%s' '%s'
            ', $0, tolower($0)) }' | sh

            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).

            sqrt -funktion i Linux awk -kommandot

            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/fstab

            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 $1}' /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 $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.txt

            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.

            lägg till radnummer med kommandot awk

            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 | sort

            Nästa kommando kommer att skriva ut inloggningsnamnet för alla användare från /etc/passwd fil.

            $ awk -F ':' '{ print $1 }' /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
            Dela med sig Facebook Twitter Pinterest WhatsApp ReddIt Telegram Viber

              7 KOMMENTARER

              1. 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.
                  awk används för datamanipulering och ger fler programmeringsfunktioner

                  Svar
              2. Ahmed 16 april 2020 Klockan 13:24

                Hej,
                Exemplen är bra men det hade varit bättre om du också hade postat utdata efter exempel.

                Svar
                • 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
              3. Stefan 6 april 2020 klockan 10:54

                Utmärkta exempel. Tack för den här

                Svar
              4. 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.

              spot_img

              Senaste posten

              Android

              10 bästa ansiktsbytesappar för Android och iOS -enhet

              Windows OS

              Hur man schemalägger Windows 10 för att tömma papperskorgen automatiskt

              Android

              De 10 bästa faktureringsapparna för Android -enheter för att få betalt snabbt

              Windows OS

              De 10 bästa GPU -riktmärken för din dator

              Måste läsas

              Linux

              Hur man installerar och konfigurerar XAMPP på Ubuntu Linux

              Linux

              Ubuntu Communitheme - Ett nytt Ubuntu Community -tema

              Linux

              Hur man installerar programvara från källkoden i ditt Linux -system

              Linux

              RedNotebook - 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

              )) }' $ 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

              INNEHÅLL

              1. Förstå AWK -program
              2. Praktiska exempel på awk Command i Linux
                1. 1. Skriv ut specifika fält från textutmatning
                2. 2. Skriv ut flera fält från textutmatning
                3. 3. Använd BEGIN -uttalanden
                4. 4. Använd SLUT -uttalanden
                5. 5. Sök med hjälp av mönster
                6. 6. Extrahera information från filer
                7. 7. Läs AWK -skript från källfilen
                8. 8. Ställ in inmatningsfältet
                9. 9. Skriv ut information baserat på skick
                10. 10. Skriv ut information genom att jämföra vanliga uttryck
                11. 11. Räkna det totala antalet rader i inmatning
                12. 12. Ställ in utmatningsfältavskiljare
                13. 13. Använda If Construct
                14. 14. Använda If-Else Constructs
                15. 15. Ställ in fältbredden
                16. 16. Ställ in inspelningsseparatorn
                17. 17. Utskriftsmiljövariabler
                18. 18. Utelämna vissa fält från utdata
                19. 19. Ta bort tomma linjer
                20. 20. Ta bort släpande blanksteg
                21. 21. Kontrollera antalet fält i varje rad
                22. 22. Verifiera aktuellt filnamn
                23. 23. Verifiera antalet bearbetade poster
                24. 24. Skriv ut det totala antalet tecken i en post
                25. 25. Skriv ut alla rader längre än en angiven längd
                26. 26. Skriv ut antalet rader, tecken och ord
                27. 27. Beräkna ordfrekvens
                28. 28. Byt namn på filer med AWK
                29. 29. Skriv ut ett fyrkantigt rot av ett nummer
                30. 30. Skriv ut logaritmen för ett tal
                31. 31. Skriv ut ett tals exponential
                32. 32. Generera slumpmässiga nummer med AWK
                33. 33. Färgkompilatorvarningar i rött
                34. 34. Skriv ut UUID -informationen för filsystemet
                35. 35. Skriv ut Linux Kernel Image Version
                36. 36. Lägg till radnummer före rader
                37. 37. Skriv ut en fil efter att innehållet har sorterats
                38. 38. Skriv ut den manuella sidan
                39. 39. Skriv ut hjälpsidan
                40. 40. Skriv ut versioninformation
              3. 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 -kommando i Linux

              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-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.

              awk mönster sökning

              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 $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.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 '$3 ~ /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$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.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 ($4>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.

              $ 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.

              fältbredd i awk

              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.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':' '{$2=''; 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':' '{$2='';$3='';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.

              antal bearbetade rader i awk

              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/passwd

              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($0) > 10'
              $ awk '{ length($0) > 5; }' /etc/passwd

              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'
              ', $0, tolower($0)) }' $ ls *.MP3 | awk '{ printf('mv '%s' '%s'
              ', $0, tolower($0)) }' | sh

              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).

              sqrt -funktion i Linux awk -kommandot

              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/fstab

              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 $1}' /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 $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.txt

              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.

              lägg till radnummer med kommandot awk

              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 | sort

              Nästa kommando kommer att skriva ut inloggningsnamnet för alla användare från /etc/passwd fil.

              $ awk -F ':' '{ print $1 }' /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
              Dela med sig Facebook Twitter Pinterest WhatsApp ReddIt Telegram Viber

                7 KOMMENTARER

                1. 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.
                    awk används för datamanipulering och ger fler programmeringsfunktioner

                    Svar
                2. Ahmed 16 april 2020 Klockan 13:24

                  Hej,
                  Exemplen är bra men det hade varit bättre om du också hade postat utdata efter exempel.

                  Svar
                  • 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
                3. Stefan 6 april 2020 klockan 10:54

                  Utmärkta exempel. Tack för den här

                  Svar
                4. 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.

                spot_img

                Senaste posten

                Android

                10 bästa ansiktsbytesappar för Android och iOS -enhet

                Windows OS

                Hur man schemalägger Windows 10 för att tömma papperskorgen automatiskt

                Android

                De 10 bästa faktureringsapparna för Android -enheter för att få betalt snabbt

                Windows OS

                De 10 bästa GPU -riktmärken för din dator

                Måste läsas

                Linux

                Hur man installerar och konfigurerar XAMPP på Ubuntu Linux

                Linux

                Ubuntu Communitheme - Ett nytt Ubuntu Community -tema

                Linux

                Hur man installerar programvara från källkoden i ditt Linux -system

                Linux

                RedNotebook - 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

                , tolower(
                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

                1. Förstå AWK -program
                2. Praktiska exempel på awk Command i Linux
                  1. 1. Skriv ut specifika fält från textutmatning
                  2. 2. Skriv ut flera fält från textutmatning
                  3. 3. Använd BEGIN -uttalanden
                  4. 4. Använd SLUT -uttalanden
                  5. 5. Sök med hjälp av mönster
                  6. 6. Extrahera information från filer
                  7. 7. Läs AWK -skript från källfilen
                  8. 8. Ställ in inmatningsfältet
                  9. 9. Skriv ut information baserat på skick
                  10. 10. Skriv ut information genom att jämföra vanliga uttryck
                  11. 11. Räkna det totala antalet rader i inmatning
                  12. 12. Ställ in utmatningsfältavskiljare
                  13. 13. Använda If Construct
                  14. 14. Använda If-Else Constructs
                  15. 15. Ställ in fältbredden
                  16. 16. Ställ in inspelningsseparatorn
                  17. 17. Utskriftsmiljövariabler
                  18. 18. Utelämna vissa fält från utdata
                  19. 19. Ta bort tomma linjer
                  20. 20. Ta bort släpande blanksteg
                  21. 21. Kontrollera antalet fält i varje rad
                  22. 22. Verifiera aktuellt filnamn
                  23. 23. Verifiera antalet bearbetade poster
                  24. 24. Skriv ut det totala antalet tecken i en post
                  25. 25. Skriv ut alla rader längre än en angiven längd
                  26. 26. Skriv ut antalet rader, tecken och ord
                  27. 27. Beräkna ordfrekvens
                  28. 28. Byt namn på filer med AWK
                  29. 29. Skriv ut ett fyrkantigt rot av ett nummer
                  30. 30. Skriv ut logaritmen för ett tal
                  31. 31. Skriv ut ett tals exponential
                  32. 32. Generera slumpmässiga nummer med AWK
                  33. 33. Färgkompilatorvarningar i rött
                  34. 34. Skriv ut UUID -informationen för filsystemet
                  35. 35. Skriv ut Linux Kernel Image Version
                  36. 36. Lägg till radnummer före rader
                  37. 37. Skriv ut en fil efter att innehållet har sorterats
                  38. 38. Skriv ut den manuella sidan
                  39. 39. Skriv ut hjälpsidan
                  40. 40. Skriv ut versioninformation
                3. 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 -kommando i Linux

                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-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.

                awk mönster sökning

                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 $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.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 '$3 ~ /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$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.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 ($4>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.

                $ 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.

                fältbredd i awk

                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.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':' '{$2=''; 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':' '{$2='';$3='';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.

                antal bearbetade rader i awk

                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/passwd

                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($0) > 10'
                $ awk '{ length($0) > 5; }' /etc/passwd

                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'
                ', $0, tolower($0)) }' $ ls *.MP3 | awk '{ printf('mv '%s' '%s'
                ', $0, tolower($0)) }' | sh

                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).

                sqrt -funktion i Linux awk -kommandot

                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/fstab

                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 $1}' /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 $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.txt

                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.

                lägg till radnummer med kommandot awk

                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 | sort

                Nästa kommando kommer att skriva ut inloggningsnamnet för alla användare från /etc/passwd fil.

                $ awk -F ':' '{ print $1 }' /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
                Dela med sig Facebook Twitter Pinterest WhatsApp ReddIt Telegram Viber

                  7 KOMMENTARER

                  1. 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.
                      awk används för datamanipulering och ger fler programmeringsfunktioner

                      Svar
                  2. Ahmed 16 april 2020 Klockan 13:24

                    Hej,
                    Exemplen är bra men det hade varit bättre om du också hade postat utdata efter exempel.

                    Svar
                    • 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
                  3. Stefan 6 april 2020 klockan 10:54

                    Utmärkta exempel. Tack för den här

                    Svar
                  4. 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.

                  spot_img

                  Senaste posten

                  Android

                  10 bästa ansiktsbytesappar för Android och iOS -enhet

                  Windows OS

                  Hur man schemalägger Windows 10 för att tömma papperskorgen automatiskt

                  Android

                  De 10 bästa faktureringsapparna för Android -enheter för att få betalt snabbt

                  Windows OS

                  De 10 bästa GPU -riktmärken för din dator

                  Måste läsas

                  Linux

                  Hur man installerar och konfigurerar XAMPP på Ubuntu Linux

                  Linux

                  Ubuntu Communitheme - Ett nytt Ubuntu Community -tema

                  Linux

                  Hur man installerar programvara från källkoden i ditt Linux -system

                  Linux

                  RedNotebook - 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

                  )) }' | sh

                  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).

                  sqrt -funktion i Linux awk -kommandot

                  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

                  INNEHÅLL

                  1. Förstå AWK -program
                  2. Praktiska exempel på awk Command i Linux
                    1. 1. Skriv ut specifika fält från textutmatning
                    2. 2. Skriv ut flera fält från textutmatning
                    3. 3. Använd BEGIN -uttalanden
                    4. 4. Använd SLUT -uttalanden
                    5. 5. Sök med hjälp av mönster
                    6. 6. Extrahera information från filer
                    7. 7. Läs AWK -skript från källfilen
                    8. 8. Ställ in inmatningsfältet
                    9. 9. Skriv ut information baserat på skick
                    10. 10. Skriv ut information genom att jämföra vanliga uttryck
                    11. 11. Räkna det totala antalet rader i inmatning
                    12. 12. Ställ in utmatningsfältavskiljare
                    13. 13. Använda If Construct
                    14. 14. Använda If-Else Constructs
                    15. 15. Ställ in fältbredden
                    16. 16. Ställ in inspelningsseparatorn
                    17. 17. Utskriftsmiljövariabler
                    18. 18. Utelämna vissa fält från utdata
                    19. 19. Ta bort tomma linjer
                    20. 20. Ta bort släpande blanksteg
                    21. 21. Kontrollera antalet fält i varje rad
                    22. 22. Verifiera aktuellt filnamn
                    23. 23. Verifiera antalet bearbetade poster
                    24. 24. Skriv ut det totala antalet tecken i en post
                    25. 25. Skriv ut alla rader längre än en angiven längd
                    26. 26. Skriv ut antalet rader, tecken och ord
                    27. 27. Beräkna ordfrekvens
                    28. 28. Byt namn på filer med AWK
                    29. 29. Skriv ut ett fyrkantigt rot av ett nummer
                    30. 30. Skriv ut logaritmen för ett tal
                    31. 31. Skriv ut ett tals exponential
                    32. 32. Generera slumpmässiga nummer med AWK
                    33. 33. Färgkompilatorvarningar i rött
                    34. 34. Skriv ut UUID -informationen för filsystemet
                    35. 35. Skriv ut Linux Kernel Image Version
                    36. 36. Lägg till radnummer före rader
                    37. 37. Skriv ut en fil efter att innehållet har sorterats
                    38. 38. Skriv ut den manuella sidan
                    39. 39. Skriv ut hjälpsidan
                    40. 40. Skriv ut versioninformation
                  3. 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 -kommando i Linux

                  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-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.

                  awk mönster sökning

                  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 $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.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 '$3 ~ /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$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.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 ($4>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.

                  $ 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.

                  fältbredd i awk

                  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.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':' '{$2=''; 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':' '{$2='';$3='';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.

                  antal bearbetade rader i awk

                  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/passwd

                  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($0) > 10'
                  $ awk '{ length($0) > 5; }' /etc/passwd

                  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'
                  ', $0, tolower($0)) }' $ ls *.MP3 | awk '{ printf('mv '%s' '%s'
                  ', $0, tolower($0)) }' | sh

                  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).

                  sqrt -funktion i Linux awk -kommandot

                  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/fstab

                  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 $1}' /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 $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.txt

                  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.

                  lägg till radnummer med kommandot awk

                  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 | sort

                  Nästa kommando kommer att skriva ut inloggningsnamnet för alla användare från /etc/passwd fil.

                  $ awk -F ':' '{ print $1 }' /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
                  Dela med sig Facebook Twitter Pinterest WhatsApp ReddIt Telegram Viber

                    7 KOMMENTARER

                    1. 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.
                        awk används för datamanipulering och ger fler programmeringsfunktioner

                        Svar
                    2. Ahmed 16 april 2020 Klockan 13:24

                      Hej,
                      Exemplen är bra men det hade varit bättre om du också hade postat utdata efter exempel.

                      Svar
                      • 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
                    3. Stefan 6 april 2020 klockan 10:54

                      Utmärkta exempel. Tack för den här

                      Svar
                    4. 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.

                    spot_img

                    Senaste posten

                    Android

                    10 bästa ansiktsbytesappar för Android och iOS -enhet

                    Windows OS

                    Hur man schemalägger Windows 10 för att tömma papperskorgen automatiskt

                    Android

                    De 10 bästa faktureringsapparna för Android -enheter för att få betalt snabbt

                    Windows OS

                    De 10 bästa GPU -riktmärken för din dator

                    Måste läsas

                    Linux

                    Hur man installerar och konfigurerar XAMPP på Ubuntu Linux

                    Linux

                    Ubuntu Communitheme - Ett nytt Ubuntu Community -tema

                    Linux

                    Hur man installerar programvara från källkoden i ditt Linux -system

                    Linux

                    RedNotebook - 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

                    '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 
                    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

                    1. Förstå AWK -program
                    2. Praktiska exempel på awk Command i Linux
                      1. 1. Skriv ut specifika fält från textutmatning
                      2. 2. Skriv ut flera fält från textutmatning
                      3. 3. Använd BEGIN -uttalanden
                      4. 4. Använd SLUT -uttalanden
                      5. 5. Sök med hjälp av mönster
                      6. 6. Extrahera information från filer
                      7. 7. Läs AWK -skript från källfilen
                      8. 8. Ställ in inmatningsfältet
                      9. 9. Skriv ut information baserat på skick
                      10. 10. Skriv ut information genom att jämföra vanliga uttryck
                      11. 11. Räkna det totala antalet rader i inmatning
                      12. 12. Ställ in utmatningsfältavskiljare
                      13. 13. Använda If Construct
                      14. 14. Använda If-Else Constructs
                      15. 15. Ställ in fältbredden
                      16. 16. Ställ in inspelningsseparatorn
                      17. 17. Utskriftsmiljövariabler
                      18. 18. Utelämna vissa fält från utdata
                      19. 19. Ta bort tomma linjer
                      20. 20. Ta bort släpande blanksteg
                      21. 21. Kontrollera antalet fält i varje rad
                      22. 22. Verifiera aktuellt filnamn
                      23. 23. Verifiera antalet bearbetade poster
                      24. 24. Skriv ut det totala antalet tecken i en post
                      25. 25. Skriv ut alla rader längre än en angiven längd
                      26. 26. Skriv ut antalet rader, tecken och ord
                      27. 27. Beräkna ordfrekvens
                      28. 28. Byt namn på filer med AWK
                      29. 29. Skriv ut ett fyrkantigt rot av ett nummer
                      30. 30. Skriv ut logaritmen för ett tal
                      31. 31. Skriv ut ett tals exponential
                      32. 32. Generera slumpmässiga nummer med AWK
                      33. 33. Färgkompilatorvarningar i rött
                      34. 34. Skriv ut UUID -informationen för filsystemet
                      35. 35. Skriv ut Linux Kernel Image Version
                      36. 36. Lägg till radnummer före rader
                      37. 37. Skriv ut en fil efter att innehållet har sorterats
                      38. 38. Skriv ut den manuella sidan
                      39. 39. Skriv ut hjälpsidan
                      40. 40. Skriv ut versioninformation
                    3. 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 -kommando i Linux

                    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-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.

                    awk mönster sökning

                    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 $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.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 '$3 ~ /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$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.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 ($4>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.

                    $ 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.

                    fältbredd i awk

                    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.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':' '{$2=''; 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':' '{$2='';$3='';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.

                    antal bearbetade rader i awk

                    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/passwd

                    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($0) > 10'
                    $ awk '{ length($0) > 5; }' /etc/passwd

                    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'
                    ', $0, tolower($0)) }' $ ls *.MP3 | awk '{ printf('mv '%s' '%s'
                    ', $0, tolower($0)) }' | sh

                    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).

                    sqrt -funktion i Linux awk -kommandot

                    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/fstab

                    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 $1}' /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 $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.txt

                    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.

                    lägg till radnummer med kommandot awk

                    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 | sort

                    Nästa kommando kommer att skriva ut inloggningsnamnet för alla användare från /etc/passwd fil.

                    $ awk -F ':' '{ print $1 }' /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
                    Dela med sig Facebook Twitter Pinterest WhatsApp ReddIt Telegram Viber

                      7 KOMMENTARER

                      1. 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.
                          awk används för datamanipulering och ger fler programmeringsfunktioner

                          Svar
                      2. Ahmed 16 april 2020 Klockan 13:24

                        Hej,
                        Exemplen är bra men det hade varit bättre om du också hade postat utdata efter exempel.

                        Svar
                        • 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
                      3. Stefan 6 april 2020 klockan 10:54

                        Utmärkta exempel. Tack för den här

                        Svar
                      4. 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.

                      spot_img

                      Senaste posten

                      Android

                      10 bästa ansiktsbytesappar för Android och iOS -enhet

                      Windows OS

                      Hur man schemalägger Windows 10 för att tömma papperskorgen automatiskt

                      Android

                      De 10 bästa faktureringsapparna för Android -enheter för att få betalt snabbt

                      Windows OS

                      De 10 bästa GPU -riktmärken för din dator

                      Måste läsas

                      Linux

                      Hur man installerar och konfigurerar XAMPP på Ubuntu Linux

                      Linux

                      Ubuntu Communitheme - Ett nytt Ubuntu Community -tema

                      Linux

                      Hur man installerar programvara från källkoden i ditt Linux -system

                      Linux

                      RedNotebook - 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

                      }' /etc/fstab

                      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

                      INNEHÅLL

                      1. Förstå AWK -program
                      2. Praktiska exempel på awk Command i Linux
                        1. 1. Skriv ut specifika fält från textutmatning
                        2. 2. Skriv ut flera fält från textutmatning
                        3. 3. Använd BEGIN -uttalanden
                        4. 4. Använd SLUT -uttalanden
                        5. 5. Sök med hjälp av mönster
                        6. 6. Extrahera information från filer
                        7. 7. Läs AWK -skript från källfilen
                        8. 8. Ställ in inmatningsfältet
                        9. 9. Skriv ut information baserat på skick
                        10. 10. Skriv ut information genom att jämföra vanliga uttryck
                        11. 11. Räkna det totala antalet rader i inmatning
                        12. 12. Ställ in utmatningsfältavskiljare
                        13. 13. Använda If Construct
                        14. 14. Använda If-Else Constructs
                        15. 15. Ställ in fältbredden
                        16. 16. Ställ in inspelningsseparatorn
                        17. 17. Utskriftsmiljövariabler
                        18. 18. Utelämna vissa fält från utdata
                        19. 19. Ta bort tomma linjer
                        20. 20. Ta bort släpande blanksteg
                        21. 21. Kontrollera antalet fält i varje rad
                        22. 22. Verifiera aktuellt filnamn
                        23. 23. Verifiera antalet bearbetade poster
                        24. 24. Skriv ut det totala antalet tecken i en post
                        25. 25. Skriv ut alla rader längre än en angiven längd
                        26. 26. Skriv ut antalet rader, tecken och ord
                        27. 27. Beräkna ordfrekvens
                        28. 28. Byt namn på filer med AWK
                        29. 29. Skriv ut ett fyrkantigt rot av ett nummer
                        30. 30. Skriv ut logaritmen för ett tal
                        31. 31. Skriv ut ett tals exponential
                        32. 32. Generera slumpmässiga nummer med AWK
                        33. 33. Färgkompilatorvarningar i rött
                        34. 34. Skriv ut UUID -informationen för filsystemet
                        35. 35. Skriv ut Linux Kernel Image Version
                        36. 36. Lägg till radnummer före rader
                        37. 37. Skriv ut en fil efter att innehållet har sorterats
                        38. 38. Skriv ut den manuella sidan
                        39. 39. Skriv ut hjälpsidan
                        40. 40. Skriv ut versioninformation
                      3. 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 -kommando i Linux

                      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-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.

                      awk mönster sökning

                      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 $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.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 '$3 ~ /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$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.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 ($4>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.

                      $ 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.

                      fältbredd i awk

                      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.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':' '{$2=''; 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':' '{$2='';$3='';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.

                      antal bearbetade rader i awk

                      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/passwd

                      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($0) > 10'
                      $ awk '{ length($0) > 5; }' /etc/passwd

                      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'
                      ', $0, tolower($0)) }' $ ls *.MP3 | awk '{ printf('mv '%s' '%s'
                      ', $0, tolower($0)) }' | sh

                      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).

                      sqrt -funktion i Linux awk -kommandot

                      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/fstab

                      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 $1}' /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 $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.txt

                      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.

                      lägg till radnummer med kommandot awk

                      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 | sort

                      Nästa kommando kommer att skriva ut inloggningsnamnet för alla användare från /etc/passwd fil.

                      $ awk -F ':' '{ print $1 }' /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
                      Dela med sig Facebook Twitter Pinterest WhatsApp ReddIt Telegram Viber

                        7 KOMMENTARER

                        1. 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.
                            awk används för datamanipulering och ger fler programmeringsfunktioner

                            Svar
                        2. Ahmed 16 april 2020 Klockan 13:24

                          Hej,
                          Exemplen är bra men det hade varit bättre om du också hade postat utdata efter exempel.

                          Svar
                          • 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
                        3. Stefan 6 april 2020 klockan 10:54

                          Utmärkta exempel. Tack för den här

                          Svar
                        4. 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.

                        spot_img

                        Senaste posten

                        Android

                        10 bästa ansiktsbytesappar för Android och iOS -enhet

                        Windows OS

                        Hur man schemalägger Windows 10 för att tömma papperskorgen automatiskt

                        Android

                        De 10 bästa faktureringsapparna för Android -enheter för att få betalt snabbt

                        Windows OS

                        De 10 bästa GPU -riktmärken för din dator

                        Måste läsas

                        Linux

                        Hur man installerar och konfigurerar XAMPP på Ubuntu Linux

                        Linux

                        Ubuntu Communitheme - Ett nytt Ubuntu Community -tema

                        Linux

                        Hur man installerar programvara från källkoden i ditt Linux -system

                        Linux

                        RedNotebook - 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

                        ;next}{print}' test.txt

                        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.

                        lägg till radnummer med kommandot awk

                        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
                        Dela med sig Facebook Twitter Pinterest WhatsApp ReddIt Telegram Viber

                          7 KOMMENTARER

                          1. 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.
                              awk används för datamanipulering och ger fler programmeringsfunktioner

                              Svar
                          2. Ahmed 16 april 2020 Klockan 13:24

                            Hej,
                            Exemplen är bra men det hade varit bättre om du också hade postat utdata efter exempel.

                            Svar
                            • 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
                          3. Stefan 6 april 2020 klockan 10:54

                            Utmärkta exempel. Tack för den här

                            Svar
                          4. 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.

                          spot_img

                          Senaste posten

                          Android

                          10 bästa ansiktsbytesappar för Android och iOS -enhet

                          Windows OS

                          Hur man schemalägger Windows 10 för att tömma papperskorgen automatiskt

                          Android

                          De 10 bästa faktureringsapparna för Android -enheter för att få betalt snabbt

                          Windows OS

                          De 10 bästa GPU -riktmärken för din dator

                          Måste läsas

                          Linux

                          Hur man installerar och konfigurerar XAMPP på Ubuntu Linux

                          Linux

                          Ubuntu Communitheme - Ett nytt Ubuntu Community -tema

                          Linux

                          Hur man installerar programvara från källkoden i ditt Linux -system

                          Linux

                          RedNotebook - 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



                          ^