[Risolto] Mawk vs gawk Script non funzionante

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
luigirocco_86
Prode Principiante
Messaggi: 10
Iscrizione: sabato 30 novembre 2019, 18:08
Sesso: Maschile

[Risolto] Mawk vs gawk Script non funzionante

Messaggio da luigirocco_86 » sabato 11 gennaio 2020, 10:16

Ciao a tutti ho un problema che davvero non riesco a spiegarmi.
Oggi su un pc con distro avente gawk installato, ho fatto uno script, che segue un log con tail e con awk lo elabora. Tutto funzionante.
Torno a casa, lancio lo script sul mio pc e, nonostante non dia errori, non mi stampa niente.
Installo gawk e lo script torna a funzionare, lo disinstallo, tornando quindi a mawk e lo script non funziona di nuovo

Provo allora a scrivere una cosa molto semplice direttamente da riga di comando, per capire quali sono le differenze tra i due.

tail -n0 -F file | gawk '/pattern/{print $0}'
ed è utto ok


Cambio invece con mawk:
tail -n0 -F file | mawk '/pattern/{print $0}'
E non mi stampa la riga con la parola.

Questa mi sembra una sintassi base di awk.
Vi chiedo allora cosa sto sbagliando?
Sono davvero così diversi i due?

Chiedo scusa se sto facendo qualche errore banale, ma è da poco che mi cimento

Grazie
Ultima modifica di luigirocco_86 il sabato 11 gennaio 2020, 21:56, modificato 1 volta in totale.

Avatar utente
UbuNuovo
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 3858
Iscrizione: sabato 12 dicembre 2009, 20:58
Desktop: Mate
Distribuzione: Ubuntu 14.04
Sesso: Maschile
Contatti:

Re: Mawk vs gawk Script non funzionante

Messaggio da UbuNuovo » sabato 11 gennaio 2020, 16:13

Non ho mai usato Mawk, so che è più veloce ma più limitato di Gawk (GNU).
ho provato:

Codice: Seleziona tutto

tail -n0 -F file | mawk '/pattern/{print $0}'
e infatti non funge, mentre funziona regolarmente:

Codice: Seleziona tutto

mawk '/pattern/{print $0}' file
Ho guardato la pagina man di mawk ed ho trovato:
-W interactive sets unbuffered writes to stdout and line buffered reads from stdin. Records from stdin are lines regardless of the value of RS.

Codice: Seleziona tutto

tail -n0 -F file | mawk -W interactive '/pattern/{print $0}'
così funziona!

Se hai Ubuntu, Gawk dovrebbe essere il programma predefinito se lanciato con awk, infatti:

Codice: Seleziona tutto

8-) which awk
/usr/bin/awk
8-) ls -al /usr/bin/awk
lrwxrwxrwx 1 root root 21 giu 29  2015 /usr/bin/awk -> /etc/alternatives/awk
8-) ls -al /etc/alternatives/awk
lrwxrwxrwx 1 root root 13 giu 29  2015 /etc/alternatives/awk -> /usr/bin/gawk
8-) update-alternatives --list awk
/usr/bin/gawk
/usr/bin/mawk
Puoi impostare il tipo di awk predefinito con:

Codice: Seleziona tutto

sudo update-alternatives --config awk
Nel caso in cui sia il primo a rispondere ad una richiesta di aiuto...chiunque abbia una soluzione migliore o anche solo diversa dalla mia è incoraggiato ad intervenire liberamente senza inviarmi alcun messaggio privato. In programmazione è basilare sapere che si può ottenere il medesimo risultato utilizzando metodi diversi.

luigirocco_86
Prode Principiante
Messaggi: 10
Iscrizione: sabato 30 novembre 2019, 18:08
Sesso: Maschile

Re: Mawk vs gawk Script non funzionante

Messaggio da luigirocco_86 » sabato 11 gennaio 2020, 21:55

UbuNuovo [url=https://forum.ubuntu-it.org/viewtopic.php?p=5171347#p5171347][img]https://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:Non ho mai usato Mawk, so che è più veloce ma più limitato di Gawk (GNU).
ho provato:

Codice: Seleziona tutto

tail -n0 -F file | mawk '/pattern/{print $0}'
e infatti non funge, mentre funziona regolarmente:

Codice: Seleziona tutto

mawk '/pattern/{print $0}' file
Ho guardato la pagina man di mawk ed ho trovato:
-W interactive sets unbuffered writes to stdout and line buffered reads from stdin. Records from stdin are lines regardless of the value of RS.

Codice: Seleziona tutto

tail -n0 -F file | mawk -W interactive '/pattern/{print $0}'
così funziona!

Se hai Ubuntu, Gawk dovrebbe essere il programma predefinito se lanciato con awk, infatti:

Codice: Seleziona tutto

8-) which awk
/usr/bin/awk
8-) ls -al /usr/bin/awk
lrwxrwxrwx 1 root root 21 giu 29  2015 /usr/bin/awk -> /etc/alternatives/awk
8-) ls -al /etc/alternatives/awk
lrwxrwxrwx 1 root root 13 giu 29  2015 /etc/alternatives/awk -> /usr/bin/gawk
8-) update-alternatives --list awk
/usr/bin/gawk
/usr/bin/mawk
Puoi impostare il tipo di awk predefinito con:

Codice: Seleziona tutto

sudo update-alternatives --config awk
Chiarissimo, grazie mille

Avatar utente
UbuNuovo
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 3858
Iscrizione: sabato 12 dicembre 2009, 20:58
Desktop: Mate
Distribuzione: Ubuntu 14.04
Sesso: Maschile
Contatti:

Re: [Risolto] Mawk vs gawk Script non funzionante

Messaggio da UbuNuovo » lunedì 13 gennaio 2020, 17:48

Di nulla. 8-)
Ciaux
Nel caso in cui sia il primo a rispondere ad una richiesta di aiuto...chiunque abbia una soluzione migliore o anche solo diversa dalla mia è incoraggiato ad intervenire liberamente senza inviarmi alcun messaggio privato. In programmazione è basilare sapere che si può ottenere il medesimo risultato utilizzando metodi diversi.

Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 7 ospiti