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:
- 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
:
Suma și media unei coloane
Această comandă calculează suma și media valorilor din a doua coloană a fișierului 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:
Întrebări frecvente
-
Cum schimb separatorul de câmpuri în
awk
?
Folosește opțiunea-F
urmată de separatorul dorit. De exemplu:Aceasta va afișa al doilea câmp dintr-un fișier CSV.
-
Poate
awk
să proceseze mai multe fișiere simultan?
Da,awk
poate procesa mai multe fișiere secvențial. De exemplu:Va procesa
fisier1.txt
șifisier2.txt
consecutiv. -
Cum pot integra variabilele shell-ului în
awk
?
Poți transmite variabilele shell-ului cătreawk
folosind opțiunea-v
. De exemplu:Aceasta va afișa valoarea variabilei shell
var
pentru fiecare linie din fișierulfisier.txt
. -
Este posibil să modific un fișier direct folosind
awk
?
Nu,awk
nu suportă editarea în loc, precumsed -i
. Totuși, poți realiza acest lucru redirecționând ieșireaawk
într-un fișier temporar și apoi redenumindu-l în fișierul original. -
Poate
awk
fi folosit pentru procesări complexe de text?
Absolut! Deșiawk
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.