Comanda awk linux

Configurare noua (How To)

Situatie

Printre numeroasele unelte de procesare a textului disponibile în shell-ul Linux, awk se remarcă prin puterea și versatilitatea sa.
Dezvoltat inițial în anii 1970 de Aho, Weinberger și Kernighan, awk este mai mult decât o comandă – este un limbaj complet de programare conceput pentru procesarea și analiza fișierelor text.

Comanda awk

awk funcționează pe fișiere și fluxuri ca o secvență de înregistrări și câmpuri.
Implicit, o înregistrare este definită ca un rând, iar câmpurile sunt separate prin spațiu alb, deși ambele pot fi redefinite.

Sintaxa de bază a comenzii awk este:

awk 'pattern {action}' fisier
  • Pattern: Specifică momentul când trebuie realizată acțiunea. Dacă este omis, acțiunea se aplică pentru fiecare linie.
  • Acțiune: Un set de comenzi care sunt executate atunci când pattern-ul este potrivit. Acțiunile sunt închise în acolade {}.

Afisarea primei coloane dintr-un fișier

Comanda de mai jos va afisa primul câmp din fiecare înregistrare (de obicei, primul cuvânt din fiecare linie) din fișierul fisier.txt:

awk '{print $1}' fisier.txt

Suma și media unei coloane

Această comandă calculează suma și media valorilor din a doua coloană a fișierului fisier.txt:

awk '{sum+=$2; count++} END {print "Sum =", sum; print "Average =", sum/count}' fisier.txt

Filtrare pe baza unei condiții

Această comandă va afișa liniile din fișierul fisier.txt unde al treilea câmp este mai mare de 100:

awk '$3 > 100' fisier.txt

Întrebări frecvente

  1. Cum schimb separatorul de câmpuri în awk?
    Folosește opțiunea -F urmată de separatorul dorit. De exemplu:

    awk -F, '{print $2}' fisier.csv

    Aceasta va afișa al doilea câmp dintr-un fișier CSV.

  2. Poate awk să proceseze mai multe fișiere simultan?
    Da, awk poate procesa mai multe fișiere secvențial. De exemplu:

    awk '{print}' fisier1.txt fisier2.txt

    Va procesa fisier1.txt și fisier2.txt consecutiv.

  3. Cum pot integra variabilele shell-ului în awk?
    Poți transmite variabilele shell-ului către awk folosind opțiunea -v. De exemplu:

    var="value"; awk -v awkVar="$var" '{print awkVar}' fisier.txt

    Aceasta va afișa valoarea variabilei shell var pentru fiecare linie din fișierul fisier.txt.

  4. Este posibil să modific un fișier direct folosind awk?
    Nu, awk nu suportă editarea în loc, precum sed -i. Totuși, poți realiza acest lucru redirecționând ieșirea awk într-un fișier temporar și apoi redenumindu-l în fișierul original.

  5. Poate awk fi folosit pentru procesări complexe de text?
    Absolut! Deși awk este simplu pentru sarcini de bază, este suficient de puternic pentru procesări complexe de text. Suportă array-uri, funcții și expresii regulate, ceea ce îl face potrivit pentru diverse sarcini de manipulare a textului.

Solutie

Tip solutie

Permanent

Voteaza

(3 din 7 persoane apreciaza acest articol)

Despre Autor

Leave A Comment?