Ricerca nel sito web

Comando awk di Linux


In questa pagina

  1. Il comando awk
  2. Sintassi di base
  3. awk Esempi
  4. Domande frequenti
  5. Conclusione

Tra i numerosi strumenti di elaborazione testi disponibili sulla shell Linux, awk si distingue per potenza e versatilità. Sviluppato originariamente negli anni '70 da Aho, Weinberger e Kernighan, awk è più di un semplice comando: è un linguaggio di programmazione completo progettato per elaborare e analizzare file di testo.

Il comando awk

awk opera su file e flussi come una sequenza di record e campi. Per impostazione predefinita, un record è definito come una linea e i campi sono separati da spazi bianchi, sebbene entrambi possano essere ridefiniti.

Sintassi di base

La sintassi di base di awk è:

awk 'pattern {action}' file
  • Modello: specifica quando deve essere eseguita l'azione. Se omesso, l'azione si applica a ogni riga.
  • Azione: una serie di comandi eseguiti quando il modello viene abbinato. Le azioni sono racchiuse tra parentesi graffe {}.

awk Esempi

Stampa la prima colonna di un file

awk '{print $1}' file.txt

Questo comando stampa il primo campo di ogni record (tipicamente, la prima parola di ogni riga) da file.txt.

Somma e media di una colonna

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

Questo comando calcola la somma e la media dei valori nella seconda colonna del file.txt.

Filtro in base a una condizione

awk '$3 > 100' file.txt

Vengono visualizzate le righe da file.txt in cui il terzo campo è maggiore di 100.

Domande frequenti

Come posso modificare il separatore di campo in awk?

Utilizzare l'opzione -F seguita dal separatore desiderato. Ad esempio, awk -F, '{print $2}' file.csv stamperà il secondo campo di un file CSV.

Awk può gestire più file contemporaneamente?

Sì, awk può elaborare più file in sequenza. Utilizzare awk '{print}' file1.txt file2.txt per elaborare file1.txt e file2.txt consecutivamente.

Come posso integrare awk con le variabili della shell?

Puoi passare variabili di shell ad awk usando l'opzione -v. Ad esempio, var="valore"; awk -v awkVar="$var" '{print awkVar}' file.txt stamperà il valore della variabile di shell var per ogni riga in file.txt.

È possibile modificare un file sul posto utilizzando awk?

No, awk non supporta direttamente la modifica sul posto come sed -i. Tuttavia, puoi ottenere questo risultato reindirizzando l'output di awk su un file temporaneo e rinominandolo nel file originale.

È possibile utilizzare awk per l'elaborazione di testi complessi?

Assolutamente. Sebbene awk sia semplice per le attività di base, è anche abbastanza potente per l'elaborazione di testi complessi. Supporta array, funzioni ed espressioni regolari, rendendolo adatto a varie attività di manipolazione del testo.

Conclusione

Il comando awk è uno strumento versatile di elaborazione del testo da riga di comando per sistemi basati su Unix. Le sue funzionalità semplici ma robuste lo rendono uno strumento indispensabile per chiunque abbia a che fare con file di testo, dall'analisi dei registri all'estrazione dei dati. Padroneggiando awk, gli utenti possono sfruttare tutto il potenziale della manipolazione del testo in Linux.

Articoli correlati: