Ce face awk
Comanda awk este un limbaj complet de programare conceput special pentru prelucrarea datelor organizate pe rânduri și coloane (cum ar fi jurnalele web, fișierele CSV sau tabelele din terminal).
Împarte automat fiecare rând în câmpuri numerotate: $1 este prima coloană, $2 a doua, iar $0 reprezintă întreaga linie. Variabila NR indică numărul liniei curente, iar NF numărul total de coloane de pe rândul curent.
Opțiuni și argumente
| Opțiune / Parametru | Descriere |
|---|---|
-F SEPARATOR |
Definește caracterul separator de coloane (implicit spații albe sau tab-uri; de ex. -F, sau -F:). |
$1, $2, ... |
Referă coloana corespunzătoare din linia curentă. |
$0 |
Reprezintă întreaga linie curentă. |
NR |
Numărul curent al rândului procesat (Number of Record). |
NF |
Numărul de coloane/câmpuri de pe rândul curent (Number of Fields). |
Exemple
Exemplul 1: Extragerea anumitor coloane dintr-un tabel
Afișăm doar numele produsului și prețul din fiecare rând.
cat << 'EOF' > produse.txt
paine 5 lei
lapte 8 lei
branza 20 lei
EOF
awk '{print $1, "costa", $2, $3}' produse.txt
Rezultat
paine costa 5 lei
lapte costa 8 lei
branza costa 20 lei
Exemplul 2: Calcularea sumei unei coloane numerice
Blocul END se execută o singură dată la finalul procesării.
cat << 'EOF' > note.txt
Mate 9
Info 10
Fizica 8
EOF
awk '{suma += $2} END {print "Total puncte:", suma}' note.txt
Rezultat
Total puncte: 27
Greșeli frecvente
- Confuzia între variabilele de shell (
$VAR) și variabilele awk ($1) când comanda awk este scrisă în ghilimele duble în loc de ghilimele simple.