Awk: apprendimento dello scripting della shell utilizzando il comando awk Terminal

Awk: apprendimento dello scripting della shell utilizzando il comando awk Terminal

Awk: apprendimento dello scripting della shell utilizzando il comando awk Terminal

Il comando "awk" nei sistemi operativi liberi di tipo GNU / Linux è un comando molto potente, che ci aiuta ad avere un maggiore controllo durante l'elaborazione dei dati da altri comandi o comandi di comando. Il nome AWK deriva dalle iniziali dei cognomi dei suoi autori: Alfred Aho, peter Weinberger e Brian Kernihan.

Questo comando fornisce un linguaggio di scripting per l'elaborazione del testo con il quale possiamo: Definire variabili, utilizzare stringhe e operatori aritmetici, utilizzare controlli di flusso e cicli e generare report formattati. In realtà, Awk è più di un semplice comando di elaborazione di modelli, è un intero linguaggio di analisi semantica.

Introduzione al comando "awk"

AWK è stata una delle prime utilità della console molto popolari per gestire (gestire / estrarre) i dati massimizzando la funzionalità delle pipe UNIX. Il linguaggio fornito da questa utility è attualmente uno standard in quasi tutti i moderni sistemi operativi di tipo UNIX, tanto che fa parte delle specifiche UNIX di base, quindi di solito è già installato nella maggior parte di essi per impostazione predefinita.

La sua sintassi più comune è: awk "programma" file e dove "programma" può essere: pattern {action} pattern {action}. Il comando legge l'input del file una riga alla volta. Ogni riga viene confrontata con ogni modello in ordine; Per ogni modello che corrisponde alla riga, viene eseguita l'azione corrispondente.

Un semplice esempio come:

awk -F: '$1=="root" {print}' /etc/passwd

chiede il primo campo se è la radice di ogni riga in / etc / passwd e lo stampa considerando ":" con -F: come separatore di campo.

Esempio introduttivo Awk

Esempi pratici

Elenco dei comandi più utilizzati

Visualizza un elenco basato sulla cronologia del terminale di sistema ordinata dal più utilizzato al meno.

history | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn | head

Esempio:

Esempio 1: comando Awk

Grafico (tabella) con numero di connessioni per ogni host

Crea un grafico ASCII basato su testo che mostra il numero totale di connessioni dall'host a ciascun indirizzo IP.

netstat -an | grep ESTABLISHED | awk '{print $5}' | awk -F: '{print $1}' | sort | uniq -c | awk '{ printf("%s\t%s\t",$2,$1) ; for (i = 0; i < $1; i++) {printf("*")}; print "" }'

Esempio:

Esempio 2: comando Awk

Elenco delle directory per dimensione

Stampa a video l'elenco delle directory del percorso corrente dalla più grande alla più piccola mostrando le etichette corrispondenti alla loro dimensione utilizzando le lettere: g, m e k.

du --max-depth=1 | sort -r -n | awk '{split("k m g",v); s=1; while($1>1024){$1/=1024; s++} print int($1)" "v[s]"\t"$2}'

Esempio:

Esempio 3: comando Awk

Mostra il traffico da un'interfaccia di rete

Visualizza il consumo di dati in entrata e in uscita online in kilobyte (kb) per un'interfaccia di rete specificata.

while [ /bin/true ]; do OLD=$NEW; NEW=`cat /proc/net/dev | grep eth0 | tr -s ' ' | cut -d' ' -f "3 11"`; echo $NEW $OLD | awk '{printf("\rin: % 9.2g\t\tout: % 9.2g", ($1-$3)/1024, ($2-$4)/1024)}'; sleep 1; done

Esempio:

Ottieni una serie di numeri di Fibonacci

Crea un elenco di numeri di quantità X seguendo uno schema di Fibonacci dato 2 numeri di base da costruire.

seq 50| awk 'BEGIN {a=1; b=1} {print a; c=a+b; a=b; b=c}'

Esempio:

Esempio 5: comando Awk

Elenco grafico della struttura dei file per dimensione

Ottieni un elenco di tutte le cartelle nella radice del sistema operativo insieme alla rappresentazione grafica (barre) e numerica come percentuale della loro dimensione al suo interno.

t=$(df|awk 'NR!=1{sum+=$2}END{print sum}');sudo du / --max-depth=1|sed '$d'|sort -rn -k1 | awk -v t=$t 'OFMT="%d" {M=64; for (a=0;a<$1;a++){if (a>c){c=a}}br=a/c;b=M*br;for(x=0;x<b;x++){printf "\033[1;31m" "|" "\033[0m"}print " "$2" "(a/t*100)"% total"}'

Esempio:

Esempio 6: comando Awk

Elenca un riepilogo dei tipi di file in una directory

Mostra un elenco dei tipi di file contenuti in una directory insieme al numero di file che corrispondono ad essa.

find . -type f | awk -F'.' '{print $NF}' | sort| uniq -c | sort -g

Esempio:

Esempio 8: comando Awk

Questi esempi di righe di comando che utilizzano il comando awk spero che lo trovi molto utile. E servono per essere utilizzati direttamente dalla console o indirettamente inserendoli in uno script (task automatizzato).

Nel prossimo post su Shell Scripting esploreremo altri comandi.

Se vuoi saperne di più sul comando "grep" visita questo link "Wiki di DEBIAN"E se vuoi saperne di più su Shell Scripting nel nostro blog, puoi dare un'occhiata alle altre nostre pubblicazioni sull'argomento, cliccando qui: Scripting in FromLinux