Ho appena iniziato a studiare awk e sono un po 'confuso su tutte quelle versioni in circolazione. Esiste una "versione" che si trova su tutti i sistemi simili a Unix? Come, sai, vi? Lo standard awk supporta l'opzione -F?
Ho appena iniziato a studiare awk e sono un po 'confuso su tutte quelle versioni in circolazione. Esiste una "versione" che si trova su tutti i sistemi simili a Unix? Come, sai, vi? Lo standard awk supporta l'opzione -F?
Risposte:
awk - il più comune e si troverà sulla maggior parte dei sistemi simili a Unix, versione più vecchia e inferiore a quelli più recenti.
mawk - implementazione veloce di AWK che è base di codice basata su un interprete di codice byte.
nawk - mentre il linguaggio AWK era in fase di sviluppo, gli autori hanno rilasciato una nuova versione (da qui il n - n ew awk) per evitare confusione. Pensalo come il Python 3.0 di AWK.
gawk - abbreviato da GNU awk. L'unica versione in cui gli sviluppatori hanno tentato di aggiungere il supporto i18n. Consentito agli utenti di scrivere le proprie librerie condivise in C per estenderle con i propri "plug-in". Questa versione è l'implementazione standard per Linux, AWK originale è stato scritto per Unix v7.
Esistono altre versioni come jawk (implementazione java), bwk (implementazione di Brian W. Kernighan) e così via.
file /etc/alternatives/awk
ritornasymbolic link to /usr/bin/mawk
Puoi semplicemente usare awk
. È definito da POSIX e pertanto deve esistere su tutti i sistemi conformi a POSIX.
Anche il -F
parametro è obbligatorio .
gensub()
, testare con awk
-> gawk
e pensare di essere bravo ad andare ...
gawk --posix
per far funzionare gawk secondo lo standard POSIX. Verifica inoltre che lo script segua lo standard. Puoi usare awk --posix '' 2>/dev/null
Ubuntu a prescindere, se gawk, mawk o original-awk sono usati come awk, ma l'opzione posix è riconosciuta solo da gawk. --posix deve essere l'ultima opzione per original-awk. Puoi usarlo awk -W posix ''
con gawk e mawk.
mawk --posix ''
fallisce, se usi mawk 1.3.3, ma riesce con un messaggio di errore, se usi mawk 1.3.4
awk
sarà su quasi tutti i sistemi basati su * NIX, ma le specifiche esatte di ciò che supporta si sposteranno leggermente poiché è del tutto possibile che sarà semplicemente collegato a una versione diversa simile a come /bin/sh
è spesso collegato a una shell specifica, spesso bash
o uno dei i suoi derivati. (Per la cronaca, conosco anche molte macchine a cui vi
è anche collegato un link simbolico vim
.)
La pagina AWK di Wikipedia è un buon riferimento per iniziare a comprendere AWK.
L' opzione Field Separator ' -F
' è supportata in tutte le varianti di AWK - afaik.
/usr/bin/awk
eseguirà nawk, o gawk, o BusyBox awk (simile nel comportamento a gawk).