Awk

15 Interessante awk-kommandoer

15 Interessante awk-kommandoer
Denne artikel vil køre dig gennem nogle interessante awk-kommandoer, og hvornår du skal bruge dem. Læs videre for at finde ud af det!

Introduktion til awk

AWK er et populært sprog i UNIX og Linux. Det fik sit navn fra dets forfattere: Alfred Aho, Peter Weinberger og Brian Kernighan. Kommandoen awk giver adgang til programmeringssproget AWK, som er designet til at behandle data inden for tekststrømme.

Awk bruges ofte til scanning af mønstre og forenkling af komplekse operationer og hjælper dig med at skrive effektive udsagn til at definere tekstmønstre i en fil. Awk-kommandoen behandler derefter disse udsagn ved at læse en linje ad gangen og foretager en handling baseret på den givne betingelse.

Kort sagt, awk finder og erstatter tekst og hjælper med at sortere, validere eller indeksere de givne data.

Funktioner i AWK

awk kommer med mange unikke funktioner:

  1. Ingen kompilering er nødvendig i awk
  2. Ofte brugt til dataekstraktion
  3. Almindeligt brugt til at udføre tekstmanipulation
  4. Hjælper med at generere resultater efter behov.

Lad os nu udforske kraften i awk-kommandoerne.

15 Interessante awk-kommandoer

Her er en samlet liste over nogle interessante awk-kommandoer:

  1. Udskrivning af tilfældige tal i et sæt - Antag, at du vil udskrive et par tilfældige tal fra en valgt pool. Du kan angive antallet af tilfældige tal fra denne pulje og bede awk om at udskrive dette. Her er et eksempel: lad os udskrive 10 numre fra 0 til 1000. Så kommandoen awk til dette vil være som følger: awk 'BEGIN for (i = 1; i <= 10; i++)
    print int (1001 * rand ()) '
  1. Søger efter foo eller bar - Hvad hvis du vil skrive en linje, hvor du vil udføre en simpel søgning efter foo eller bar? Her er en kommando, der giver dig mulighed for at gøre netop det: hvis (/ foo / || / bar /)
    print "Fundet!"
  1. Omarrangere et felt - Hvis du vil udskrive et bestemt felt i en bestemt rækkefølge, kan awk gøre det for dig. Antag at du vil udskrive de første 5 felter i et bestemt sæt i et felt pr. Linje, du kan bruge følgende kommando: awk 'i = 1
    mens jeg <= 3)
    udskriv $ i
    jeg++

    'inputfil
  1. Opdeling af en linje - I et givet sæt filer kan awk hjælpe med at opdele en linje i felter, hvor x er navnet på feltet: $ awk 'print $ x, $ x' xyz.txt
  1. Kører flere kommandoer på én gang - For at køre flere kommandoer på én gang kan du bruge et semikolon til at angive begge kommandoer: $ echo "God morgen! Jack "| awk '$ 2 =" Jill "; udskriv $ 0'
  1. Udførelse af et awk-script - Hvis du vil udføre et awk-script fra en bestemt fil, kan du oprette en fil sum_column og indsætte nedenstående script i den fil: #!/ usr / bin / awk -f
    BEGIN sum = 0
    sum = sum + $ x
    SLUT udskrivningssum

    I ovenstående script svarer x til den kolonne, du skal indtaste i filen. Efter en vellykket afslutning af denne opgave kan du bruge følgende kommando til at vise summen af ​​x-kolonnen i inputfilen:

    awk -f sum_column input_file.
  1. Brug af -f - Ved kodning kan det ofte virke upraktisk at henvise til terminalen. awk bruger -f til at udføre søgning fra en fil: awk -f script.awk inputfil
  1. Udførelse af matematiske funktioner - Du kan også bruge awk til enkle matematiske funktioner: awk 'sum = $ 2 + $ 3 + $ 4; gennemsnit = sum / 3
    > udskriv karakterer på $ 1, gennemsnit
  1. Hello World in awk - Du kan udskrive en simpel Hello World i awk ved hjælp af følgende kommando: awk "BEGIN print" Hello World!!""

    Du kan også oprette et Hello World-program. Følgende kode udskriver ikke kun den allestedsnærværende hejebesked, men genererer også headerinformation:

    $ awk 'BEGIN print "Hello World!""
  1. Udskrivning af det samlede antal bytes - Du kan finde ud af det samlede antal bytes, der bruges af filer ved hjælp af følgende kommando: ls -l . | awk 'x + = $ 5; SLUT \
    print "total bytes:" x '
    samlede bytes: 7449362
  1. Anonymisering af en Apache-log - Du kan bruge følgende kode til at anonymisere en Apache-log: cat apache-anon-noadmin.log | \
    awk 'funktion ri (n) \
    Return int (n * rand ()); \
    BEGIN srand (); Hvis (! \
    ($ 5 i jackstik)) \
    jack [$ 5] = sprintf ("% d.% d.% d.% d ", \
    ri (255), ri (255) \
    , ri (255), ri (255)); \
    $ 5 = jack [$ 5]; udskriv __g5_token5b610ba53dbe4 '
  1. Arbejder i rækker - Hvis du har en adresse, som du vil sortere i rækker, kan du gøre det ved hjælp af følgende kommando: BEGIN RS = ""; FS = "\ n"

    udskriv "Navn er:", $ 1
    udskriv "Adresse er:", $ 2
    udskrive "By og stat er:", $ 3
    Print ""
  1. Brug af while-løkken - Mens loop fortsætter med at udføre den handling, der er givet til den, i en gentagen proces, indtil betingelsen er sand. For eksempel til udskrivning af numre fra 1 til 100 kan du bruge følgende kode: awk 'BEGIN i = 1; mens jeg < 100) print i; ++i '
  1. Brug af do-while-sløjfen - I denne sløjfe udføres tilstanden i slutningen af ​​sløjfen, selvom udsagnet er forkert. For eksempel for at udskrive numre fra 1 til 100 ved hjælp af en do-while-loop kan du bruge følgende kode: awk 'BEGIN i = 1; gør print i; ++ i mens (i < 100) '
  1. Brug af BEGIN og END - BEGIN-nøgleordet bruges til at oprette en overskrift til behandling af din post: $ awk 'BEGIN print "XXX"

    På samme måde bruges END-nøgleordet efter behandling af dataene:

    END print "File footer" '

Dette afslutter listen over 15 interessante awk-kommandoer. Du kan prøve disse og se resultaterne. Håber du finder det nyttigt. Hvis du fandt denne artikel interessant, kan du udforske Mastering Linux Shell Scripting - Anden udgave. I denne bog opdager du alt hvad du behøver at vide for at mestre shell-scripting og træffe informerede valg om de elementer, du bruger.

Bedste apps til Gamepad Mapping til Linux
Hvis du kan lide at spille spil på Linux med en gamepad i stedet for et typisk tastatur- og musesystem, er der nogle nyttige apps til dig. Mange pc-sp...
Nyttige værktøjer til Linux-spillere
Hvis du kan lide at spille spil på Linux, er chancerne for, at du måske har brugt apps og hjælpeprogrammer som Wine, Lutris og OBS Studio for at forbe...
HD Remastered-spil til Linux, der aldrig tidligere havde haft en Linux-udgivelse
Mange spiludviklere og udgivere kommer med HD-remaster af gamle spil for at forlænge franchisens levetid. Venligst fans, der anmoder om kompatibilitet...