GNU/Linux >> Linux Esercitazione >  >> Linux

AWK Vs NAWK Vs GAWK

Awk è un potente linguaggio per manipolare ed elaborare file di testo. È particolarmente utile quando le righe in un file di testo sono in un formato record. cioè un record contenente più campi separati da un delimitatore. Anche quando il file di input non è in un formato record, puoi comunque utilizzare awk per eseguire alcuni file di base e l'elaborazione dei dati. Puoi anche scrivere la logica di programmazione usando awk anche quando non ci sono file di input che devono essere elaborati.

In breve, AWK è un linguaggio potente, che può tornare utile per svolgere lavori di routine quotidiani.

Se non conosci awk, inizia leggendo questo tutorial introduttivo di Awk che fa parte della serie di tutorial di Awk.

La curva di apprendimento su AWK è molto più piccola della curva di apprendimento su qualsiasi altra lingua. Se conosci già il programma C, apprezzerai quanto sia semplice e facile imparare l'AWK.

AWK è stato originariamente scritto da tre sviluppatori:A. Aho, B. W. Kernighan e P. Weinberger. Quindi, il nome AWK deriva dalle iniziali di quei tre sviluppatori.

Le seguenti sono le tre varianti di AWK:

1. Awk

AWK è l'originale AWK scritto da A. Aho, B. W. Kernighan e P. Weinberger.

2. Nawk

NAWK sta per "Nuovo AWK". Questa è la versione AT&T di Awk.

3. Gawk

GAWK sta per "GNU AWK". Tutte le distribuzioni Linux vengono fornite con GAWK. Questo è completamente compatibile con AWK e NAWK.

Su Linux, digitando awk o gawk si richiama il GAWK. awk è collegato a gawk come mostrato di seguito sui sistemi Linux.

# ls -l /bin/awk /usr/bin/awk
lrwxrwxrwx 1 root root  4 Jan  5 23:13 /bin/awk -> gawk
lrwxrwxrwx 1 root root 14 Jan  5 23:13 /usr/bin/awk -> ../../bin/gawk

La tabella seguente riassume le diverse funzionalità disponibili in queste versioni. Come puoi vedere di seguito, gawk è il superset che contiene tutte le funzionalità di awk e nawk originali.

Awk contro Nawk contro Gawk

Scarica le differenze Awk Vs Nawk Vs Gawk in formato PDF cheatsheet.

Le seguenti variabili integrate di base FS, OFS, RS, ORS, NR, NF e FILENAME sono disponibili in tutte le versioni di awk.

Caratteristica Descrizione AWK NAWK GAWK
FS Separatore campo di immissione
OFS Separatore campo di output
RS Separatore di record
ORS Separatore record di output
NR Numero del record
NF Numero di campi in un record
NOME FILE Contiene il file di input corrente che viene elaborato

Tutte le seguenti funzionalità non sono disponibili nell'awk originale. Sono disponibili in nawk e/o gawk come mostrato di seguito.

Caratteristica Descrizione NAWK GAWK
FNR File “Numero del record”
ARGC Numero totale o argomenti passati allo script awk
ARGV Array contenente tutti gli argomenti dello script awk
ARGENDO Indice ad ARGV per recuperare il nome del file corrente
SUBSEP Separatore di indici per gli indici di array
RSTART La funzione Match imposta RSTART con la posizione iniziale di str1 in str2
LUNGHEZZA La funzione Match imposta RLENGTH con la lunghezza di str1
OFMT Awk lo usa per decidere come stampare i valori. L'impostazione predefinita è "%.6g"
AMBIENTE Array contenente tutte le variabili ei valori di ambiente
IGNORECCA Il valore predefinito è 0. Se impostato su 1, non fa distinzione tra maiuscole e minuscole per i confronti tra stringhe e reg-ex.
ERRNO Contiene il messaggio di errore di un'operazione di I/O. per esempio. durante l'utilizzo della funzione getline.
BINMODE n Imposta la modalità binaria per I/O. n può essere 1 (file di input), 2 (file di output) o 3 (tutti i file)
CONVFMT Il formato utilizzato durante la conversione da numero a stringa.
LARGHEZZA CAMPO n n è un numero delimitato da spazi che indica le larghezze delle colonne. Se è disponibile, gawk lo usa invece di FS.
LINT n n può essere un numero. Quando n è un numero diverso da zero (che indica vero), gawk visualizzerà messaggi di lint fatali, non validi o di avviso (come da riga di comando –lint)
TEXTDOMAIN Questo è usato per l'internazionalizzazione.
sub(str1,str2,var) Nella stringa di input (var), str1 viene sostituito con str2 e l'output viene archiviato nuovamente in var
gsub(str1,str2,var) Come sub, ma globale. Esegue più sostituzioni sulla stessa stringa di input (var).
corrispondenza(str1,str2) Restituisce un numero positivo quando str1 è presente in str2.
getline Legge la riga successiva da un altro file di input. Imposta $0, NF
getline var Legge la riga successiva da un altro file di input e salvalo nella variabile (var)
topper(str) Converte str in maiuscolo
tollower(str) Converte str in minuscolo
|& Comunicazione bidirezionale tra comando awk e processo esterno
systime() Ora attuale nell'epoca. Combina con strftime. per esempio. print strftime(“%c”,systime())

Linux
  1. Usa awk per calcolare la frequenza delle lettere

  2. Una guida pratica per imparare awk

  3. Estrazione e visualizzazione dei dati con awk

  4. Variabile esterna in Awk?

  5. 4 Esempi di istruzioni Awk If ( if, if else, if else if, :? )

Comando AWK in Linux con esempi

Comando Awk in Linux

Comando awk di Linux con 10 esempi

Comando AWK in Linux/Unix

Flatpak vs Snap vs AppImage

guarda la dimensione del file su Linux