gawk-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[SCM] gawk branch, feature/docit, updated. gawk-4.1.0-4151-g0270b73


From: Antonio Giovanni Colombo
Subject: [SCM] gawk branch, feature/docit, updated. gawk-4.1.0-4151-g0270b73
Date: Wed, 14 Oct 2020 05:36:11 -0400 (EDT)

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "gawk".

The branch, feature/docit has been updated
       via  0270b7371c388523de409175f552aa8d25442c85 (commit)
      from  ff37e5d04d28f5d9cd3125ff81487ccfe159a9f4 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://git.sv.gnu.org/cgit/gawk.git/commit/?id=0270b7371c388523de409175f552aa8d25442c85

commit 0270b7371c388523de409175f552aa8d25442c85
Author: Antonio Giovanni Colombo <azc100@gmail.com>
Date:   Wed Oct 14 11:35:21 2020 +0200

    Modified gawktexi.in for the test programs and for updates to the book

diff --git a/doc/it/ChangeLog b/doc/it/ChangeLog
index 817cab5..b271b49 100644
--- a/doc/it/ChangeLog
+++ b/doc/it/ChangeLog
@@ -1,3 +1,8 @@
+2020-10-14         Antonio Giovanni Colombo   <azc100@gmail.com>
+
+       * gawktexi.in: Updated.
+       * all test scripts should now work
+
 2020-10-05         Antonio Giovanni Colombo   <azc100@gmail.com>
 
        * gawktexi.in: Updated.
diff --git a/doc/it/gawktexi.in b/doc/it/gawktexi.in
index 7ad10e1..b3a6788 100644
--- a/doc/it/gawktexi.in
+++ b/doc/it/gawktexi.in
@@ -56,7 +56,7 @@
 @c applies to and all the info about who's publishing this edition
 
 @c These apply across the board.
-@set UPDATE-MONTH Agosto 2020
+@set UPDATE-MONTH Settembre 2020
 @set VERSION 5.1
 @set PATCHLEVEL 0
 
@@ -3464,6 +3464,40 @@ idea di quel che si vuole ottenere, ma occorre leggere 
il resto del
 Molti degli esempi usano un @value{DF} di nome @file{data}.  Questo serve solo
 a indicare la posizione del nome; se questi programmi devono venir usati per
 se stessi, sostituire i propri @value{FNS} al posto di @file{data}.
+
+@cindex @command{ls} programma di utilit@`a
+@cindex programma di utilit@`a @subentry @command{ls}
+Alcuni degli esempi che seguono usano l'output di @w{@samp{ls -l}}
+come input.
+@command{ls} @`e un comando di sistema che elenca la lista dei file
+contenuti in una directory.  Specificando l'opzione @option{-l},
+la lista include anche la dimensione e la data di ultima modifica
+di ogni file.  Il suo output @`e simile a questo:
+
+@example
+-rw-r--r--  1 arnold   user   1933 Nov  7 13:05 Makefile
+-rw-r--r--  1 arnold   user  10809 Nov  7 13:03 awk.h
+-rw-r--r--  1 arnold   user    983 Apr 13 12:14 awk.tab.h
+-rw-r--r--  1 arnold   user  31869 Jun 15 12:20 awkgram.y
+-rw-r--r--  1 arnold   user  22414 Nov  7 13:03 awk1.c
+-rw-r--r--  1 arnold   user  37455 Nov  7 13:03 awk2.c
+-rw-r--r--  1 arnold   user  27511 Dec  9 13:07 awk3.c
+-rw-r--r--  1 arnold   user   7989 Nov  7 13:03 awk4.c
+@end example
+
+@noindent
+Il primo campo contiene le autorizzazioni di lettura-scrittura,
+il secondo campo contiene il numero di @dfn{link} di quel file
+[il numero di nomi con cui @`e conosciuto] e il terzo campo
+identifica il proprietario del file.
+Il quarto campo identifica il gruppo del file.
+Il quinto campo contiene la dimensione del file, in byte.
+Il sesto, settimo e ottavo campo contengono il mese, il giorno e
+l'ora, rispettivamente, in cui il file @`e stato modificato l'ultima
+volta. [Se la data di modifica @`e pi@`u di sei mesi nel passato,
+l'ottavo campo contiene l'anno, e non l'ora di modifica.]
+Finalmente il nono campo contiene il valore @value{FN}.
+
 Per futura memoria, si noti che spesso c'@`e pi@`u di un modo per fare qualcosa
 in @command{awk}.  In un altro momento, si potrebbe tornare a guardare questi
 esempi per vedere se si riescono a trovare modi differenti per fare le stesse
@@ -3647,34 +3681,24 @@ ls -l | awk '$6 == "Nov" @{ somma += $5 @}
              END @{ print somma @}'
 @end example
 
-@cindex comando @subentry @command{ls}
+@cindex @command{ls} programma di utilit@`a
+@cindex programma di utilit@`a @subentry @command{ls}
 Questo comando stampa il numero totale di byte in tutti i file contenuti
 nella directory corrente, la cui data di modifica @`e novembre (di qualsiasi
-anno).  La parte @w{@samp{ls -l}} dell'esempio @`e un comando di sistema che
-fornisce un elenco dei file in una directory, con anche la dimensione di
-ogni file e la data di ultima modifica.  Il suo output @`e del tipo:
-
-@example
--rw-r--r--  1 arnold   user   1933 Nov  7 13:05 Makefile
--rw-r--r--  1 arnold   user  10809 Nov  7 13:03 awk.h
--rw-r--r--  1 arnold   user    983 Apr 13 12:14 awk.tab.h
--rw-r--r--  1 arnold   user  31869 Jun 15 12:20 awkgram.y
--rw-r--r--  1 arnold   user  22414 Nov  7 13:03 awk1.c
--rw-r--r--  1 arnold   user  37455 Nov  7 13:03 awk2.c
--rw-r--r--  1 arnold   user  27511 Dec  9 13:07 awk3.c
--rw-r--r--  1 arnold   user   7989 Nov  7 13:03 awk4.c
-@end example
-
-@noindent
-@cindex continuazione di riga @subentry nella C shell
-Il primo campo contiene le autorizzazioni di lettura/scrittura [r/w], il
-secondo il numero dei collegamenti al file [cio@`e il numero di nomi con cui
-il file @`e conosciuto], e il terzo campo identifica il proprietario del file.
-Il quarto campo identifica il gruppo a cui appartiene il file.
+anno).
+
+Come gi@`a visto sopra, l'output di @w{@samp{ls -l}} elenca la lista
+dei file contenuti in una directory, compresa la lunghezza di ogni
+file la data in cui il file @`e stato modificato per l'ultima volta.
+Il primo campo contiene le autorizzazioni di lettura-scrittura,
+il secondo campo contiene il numero di @dfn{link} di quel file
+e il terzo campo identifica il proprietario del file.
+Il quarto campo identifica il gruppo del file.
 Il quinto campo contiene la dimensione del file, in byte.
-Il sesto, settimo e ottavo campo contengono il mese, il giorno e l'ora,
-rispettivamente, in cui il file @`e stato modificato.  Infine, il nono campo
-contiene il @value{FN}.
+Il sesto, settimo e ottavo campo contengono il mese, il giorno e
+l'ora, rispettivamente, in cui il file @`e stato modificato l'ultima
+volta.
+Finalmente il nono campo contiene il valore @value{FN}.
 
 @c @cindex automatic initialization
 @cindex inizializzazione @subentry automatica
@@ -3768,7 +3792,9 @@ mezzo di un'espressione regolare o di una stringa.
 @c 10/2000: gawk, mawk, and current bell labs awk allow it,
 @c solaris 2.7 nawk does not. Solaris /usr/xpg4/bin/awk does though!  sigh.
 
-@cindex comando @subentry @command{csh}
+@cindex comando di utilit@`a @subentry @command{csh}
+@cindex @command{csh} (comando di utilit@`a) @subentry continuazione di riga
+@cindex continuazione di riga @subentry con C shell
 @cindex barra inversa (@code{\}) @subentry continuazione di riga e @subentry 
in @command{csh}
 @cindex @code{\} (barra inversa) @subentry continuazione di riga e @subentry 
in @command{csh}
 @quotation ATTENZIONE
@@ -4076,7 +4102,7 @@ argomento, la parola chiave @`e immediatamente seguita da 
un segno di uguale
 (@samp{=}) e dal valore dell'argomento, oppure la parola chiave e il valore
 dell'argomento sono separati da spazio bianco (spazi o caratteri TAB).
 Se un'opzione con un valore viene immessa pi@`u di una volta,
-l'ultimo valore @`e quello che conta.
+l'ultimo valore @`e (di solito) quello che conta.
 
 @cindex POSIX @command{awk} @subentry opzioni estese GNU
 Ogni opzione estesa di @command{gawk} ha una corrispondente opzione
@@ -7378,7 +7404,7 @@ GNU/Linux, dove il carattere @sc{NUL} @`e di fatto un 
separatore di record..
 Comunque, quest'uso @emph{non} @`e portabile sulla maggior parte delle
 implementazioni di @command{awk}.
 
-@cindex angolo buio @subentry stringhe, memorizzazine di
+@cindex angolo buio @subentry stringhe, memorizzazione di
 Quasi tutte le altre implementazioni di @command{awk} @footnote{Almeno quelle
 che ci sono note.} memorizzano internamente le stringhe come stringhe
 in stile C.  Le stringhe in stile C usano il carattere @sc{NUL} come
@@ -21642,7 +21668,9 @@ Secondo lo standard POSIX, i parametri di funzione
 non possono avere lo stesso nome di una delle speciali variabili predefinite
 (@pxref{Variabili predefinite}), e un parametro di funzione non pu@`o avere
 lo stesso nome di un'altra funzione.
-Non tutte le versioni di @command{awk} applicano queste limitazioni.
+@cindex angolo buio @subentry limitazioni nel nome dei parametri
+Non tutte le versioni di @command{awk} applicano
+queste limitazioni. @value{DARKCORNER}
 @command{gawk} applica solo la prima di queste restrizioni.
 Se viene specificata l'opzione @option{--posix} (@pxref{Opzioni}),
 anche la seconda restrizione viene applicata.
@@ -22726,9 +22754,9 @@ Ecco una versione estesa del @value{DF}:
 
 @example
 @c file eg/data/class_data2
-Biologia_101 somma media ordina discendente dati: 87.0 92.4 78.5 94.9
-Chimica_305 somma media ordina discendente dati: 75.2 98.3 94.7 88.2
-Inglese_401 somma media ordina discendente dati: 100.0 95.6 87.1 93.4
+Biologia_101 somma media ascendente discendente dati: 87.0 92.4 78.5 94.9
+Chimica_305 somma media ascendente discendente dati: 75.2 98.3 94.7 88.2
+Inglese_401 somma media ascendente discendente dati: 100.0 95.6 87.1 93.4
 @c endfile
 @end example
 
@@ -23756,26 +23784,26 @@ con data e ora corrente formattata come nel programma 
di utilit@`a @command{date
 @c file eg/lib/gettime.awk
 
 # Restituisce una stringa nel formato dell'output di date(1)
-# Riempie l'argomento del vettore time con valori individuali:
-#    time["second"]       -- secondi (0 - 59)
-#    time["minute"]       -- minuti (0 - 59)
-#    time["hour"]         -- ore (0 - 23)
-#    time["althour"]      -- ore (0 - 12)
-#    time["monthday"]     -- giorno del mese (1 - 31)
-#    time["month"]        -- mese dell'anno (1 - 12)
-#    time["monthname"]    -- nome del mese
-#    time["shortmonth"]   -- nome breve del mese
-#    time["year"]         -- anno modulo 100 (0 - 99)
-#    time["fullyear"]     -- anno completo
-#    time["weekday"]      -- giorno della settimana (domenica = 0)
-#    time["altweekday"]   -- giorno della settimana (luned@`{@dotless{i}} = 0)
-#    time["dayname"]      -- nome del giorno della settimana
-#    time["shortdayname"] -- nome breve del giorno della settimana
-#    time["yearday"]      -- giorno dell'anno (0 - 365)
-#    time["timezone"]     -- abbreviazione del nome della zona di fuso orario
-#    time["ampm"]         -- designazione di AM o PM
-#    time["weeknum"]      -- numero della settimana, domenica primo giorno
-#    time["altweeknum"]   -- numero della settimana, luned@`{@dotless{i}} 
primmo giorno
+# Riempie l'argomento del vettore ora con valori individuali:
+#    ora["second"]       -- secondi (0 - 59)
+#    ora["minute"]       -- minuti (0 - 59)
+#    ora["hour"]         -- ore (0 - 23)
+#    ora["althour"]      -- ore (0 - 12)
+#    ora["monthday"]     -- giorno del mese (1 - 31)
+#    ora["month"]        -- mese dell'anno (1 - 12)
+#    ora["monthname"]    -- nome del mese
+#    ora["shortmonth"]   -- nome breve del mese
+#    ora["year"]         -- anno modulo 100 (0 - 99)
+#    ora["fullyear"]     -- anno completo
+#    ora["weekday"]      -- giorno della settimana (domenica = 0)
+#    ora["altweekday"]   -- giorno della settimana (luned@`{@dotless{i}} = 0)
+#    ora["dayname"]      -- nome del giorno della settimana
+#    ora["shortdayname"] -- nome breve del giorno della settimana
+#    ora["yearday"]      -- giorno dell'anno (0 - 365)
+#    ora["timezone"]     -- abbreviazione del nome della zona di fuso orario
+#    ora["ampm"]         -- designazione di AM o PM
+#    ora["weeknum"]      -- numero della settimana, domenica primo giorno
+#    ora["altweeknum"]   -- numero della settimana, luned@`{@dotless{i}} 
primmo giorno
 
 function getlocaltime(ora,    ret, adesso, i)
 @{
@@ -23793,25 +23821,25 @@ function getlocaltime(ora,    ret, adesso, i)
 
     # immette i valori, forzando i valori numerici
     # a essere numerici aggiungendo uno 0
-    time["second"]       = strftime("%S", adesso) + 0
-    time["minute"]       = strftime("%M", adesso) + 0
-    time["hour"]         = strftime("%H", adesso) + 0
-    time["althour"]      = strftime("%I", adesso) + 0
-    time["monthday"]     = strftime("%d", adesso) + 0
-    time["month"]        = strftime("%m", adesso) + 0
-    time["monthname"]    = strftime("%B", adesso)
-    time["shortmonth"]   = strftime("%b", adesso)
-    time["year"]         = strftime("%y", adesso) + 0
-    time["fullyear"]     = strftime("%Y", adesso) + 0
-    time["weekday"]      = strftime("%w", adesso) + 0
-    time["altweekday"]   = strftime("%u", adesso) + 0
-    time["dayname"]      = strftime("%A", adesso)
-    time["shortdayname"] = strftime("%a", adesso)
-    time["yearday"]      = strftime("%j", adesso) + 0
-    time["timezone"]     = strftime("%Z", adesso)
-    time["ampm"]         = strftime("%p", adesso)
-    time["weeknum"]      = strftime("%U", adesso) + 0
-    time["altweeknum"]   = strftime("%W", adesso) + 0
+    ora["second"]       = strftime("%S", adesso) + 0
+    ora["minute"]       = strftime("%M", adesso) + 0
+    ora["hour"]         = strftime("%H", adesso) + 0
+    ora["althour"]      = strftime("%I", adesso) + 0
+    ora["monthday"]     = strftime("%d", adesso) + 0
+    ora["month"]        = strftime("%m", adesso) + 0
+    ora["monthname"]    = strftime("%B", adesso)
+    ora["shortmonth"]   = strftime("%b", adesso)
+    ora["year"]         = strftime("%y", adesso) + 0
+    ora["fullyear"]     = strftime("%Y", adesso) + 0
+    ora["weekday"]      = strftime("%w", adesso) + 0
+    ora["altweekday"]   = strftime("%u", adesso) + 0
+    ora["dayname"]      = strftime("%A", adesso)
+    ora["shortdayname"] = strftime("%a", adesso)
+    ora["yearday"]      = strftime("%j", adesso) + 0
+    ora["timezone"]     = strftime("%Z", adesso)
+    ora["ampm"]         = strftime("%p", adesso)
+    ora["weeknum"]      = strftime("%U", adesso) + 0
+    ora["altweeknum"]   = strftime("%W", adesso) + 0
 
     return ret
 @}
@@ -24037,8 +24065,8 @@ comportamento desiderato.  Ci ha fornito anche il 
codice per far questo.
 Non @`e stato necessario aggiungere a @command{gawk} questi criteri di ricerca
 speciali; il lavoro si pu@`o fare tranquillamente usando @command{awk}, come
 illustrato nel seguente programma di libreria.  @`E strutturato in modo da
-chiamare due funzioni fornite dall'utente, @code{a_inizio_file()} e
-@code{a_fine_file()}, all'inizio e alla fine di ogni @value{DF}.  Oltre a 
risolvere
+chiamare due funzioni fornite dall'utente, @code{beginfile()} e
+@code{endfile()}, all'inizio e alla fine di ogni @value{DF}.  Oltre a risolvere
 il problema in sole nove(!) righe di codice,
 questa soluzione @`e @emph{portabile}; il
 programma funziona con qualsiasi implementazione di @command{awk}:
@@ -24049,7 +24077,7 @@ programma funziona con qualsiasi implementazione di 
@command{awk}:
 # Dare all'utente un aggancio per il passaggio
 # da un file in input a quello successivo
 #
-# L'utente deve fornire le funzioni a_inizio_file() ed a_fine_file()
+# L'utente deve fornire le funzioni beginfile() ed endfile()
 # ciascuna delle quali @`e invocata
 # quando il file, rispettivamente,
 # inizia e finisce.
@@ -24057,14 +24085,14 @@ programma funziona con qualsiasi implementazione di 
@command{awk}:
 @c # Arnold Robbins, arnold@@skeeve.com, Public Domain
 @c # January 1992
 
-FILENAME != _nome_file_vecchio @{
-    if (_nome_file_vecchio != "")
-        a_fine_file(_nome_file_vecchio)
-    _nome_file_vecchio = FILENAME
-    a_inizio_file(FILENAME)
+FILENAME != _oldfilename_ && _filename_ != FILENAME @{
+    if (_oldfilename_ != "")
+        endfile(_oldfilename_)
+    _oldfilename_ = FILENAME
+    beginfile(FILENAME)
 @}
 
-END @{ a_fine_file(FILENAME) @}
+END @{ endfile(FILENAME) @}
 @end example
 
 Questo file [transfile.awk] dev'essere caricato prima del programma
@@ -24073,30 +24101,30 @@ in modo che la regola ivi contenuta venga eseguita 
per prima.
 
 Questa regola dipende dalla variabile di @command{awk} @code{FILENAME}, che
 cambia automaticamente per ogni nuovo @value{DF}.  Il @value{FN} corrente viene
-salvato in una variabile privata, @code{_nome_file_vecchio}.  Se 
@code{FILENAME} non @`e
-uguale a @code{_nome_file_vecchio}, inizia l'elaborazioone di un nuovo 
@value{DF} ed
-@`e necessario chiamare @code{a_fine_file()} per il vecchio file.  Poich@'e
-@code{a_fine_file()} dovrebbe essere chiamato solo se un file @`e stato 
elaborato, il
-programma esegue prima un controllo per assicurarsi che 
@code{_nome_file_vecchio} non
+salvato in una variabile privata, @code{_oldfilename_}.  Se @code{FILENAME} 
non @`e
+uguale a @code{_oldfilename_}, inizia l'elaborazioone di un nuovo @value{DF} ed
+@`e necessario chiamare @code{endfile()} per il vecchio file.  Poich@'e
+@code{endfile()} dovrebbe essere chiamato solo se un file @`e stato elaborato, 
il
+programma esegue prima un controllo per assicurarsi che @code{_oldfilename_} 
non
 sia la stringa nulla.  Il programma assegna poi il valore corrente di
-@value{FN} a @code{_nome_file_vecchio} e chiama @code{a_inizio_file()} per il 
file.
-Poich@'e, come tutte le variabili di @command{awk}, @code{_nome_file_vecchio} 
@`e
+@value{FN} a @code{_oldfilename_} e chiama @code{beginfile()} per il file.
+Poich@'e, come tutte le variabili di @command{awk}, @code{_oldfilename_} @`e
 inizializzato alla stringa nulla, questa regola viene eseguita correttamente
 anche per il primo @value{DF}.
 
 Il programma contiene anche una regola @code{END} per completare l'elaborazione
 per l'ultimo file.  Poich@'e questa regola @code{END} viene prima di qualsiasi
 regola @code{END} contenuta nel programma ``principale'',
-@code{a_fine_file()} viene
+@code{endfile()} viene
 chiamata per prima.  Ancora una volta, l'utilit@`a di poter avere pi@`u regole
 @code{BEGIN} ed @code{END} dovrebbe risultare chiara.
 
-@cindex @code{a_inizio_file()} @subentry funzione definita dall'utente
-@cindex funzione definita dall'utente @subentry @code{a_inizio_file()}
-@cindex @code{a_fine_file()} @subentry funzione definita dall'utente
-@cindex funzione definita dall'utente @subentry @code{a_fine_file()}
+@cindex @code{beginfile()} @subentry funzione definita dall'utente
+@cindex funzione definita dall'utente @subentry @code{beginfile()}
+@cindex @code{endfile()} @subentry funzione definita dall'utente
+@cindex funzione definita dall'utente @subentry @code{endfile()}
 Se lo stesso @value{DF} compare due volte di fila sulla riga di comando,
-@code{a_fine_file()} e @code{a_inizio_file()} non vengono eseguite alla fine 
del primo
+@code{endfile()} e @code{beginfile()} non vengono eseguite alla fine del primo
 passaggio e all'inizio del secondo passaggio.
 La versione seguente risolve il problema:
 
@@ -24104,7 +24132,7 @@ La versione seguente risolve il problema:
 @c file eg/lib/ftrans.awk
 # ftrans.awk --- gestisce il passaggio da un file dati al successivo
 #
-# L'utente deve fornire le funzioni a_inizio_file() ed a_fine_file()
+# L'utente deve fornire le funzioni beginfile() ed endfile()
 @c endfile
 @ignore
 @c file eg/lib/ftrans.awk
@@ -24117,12 +24145,12 @@ La versione seguente risolve il problema:
 
 FNR == 1 @{
     if (_filename_ != "")
-        a_fine_file(_filename_)
+        endfile(_filename_)
     _filename_ = FILENAME
-    a_inizio_file(FILENAME)
+    beginfile(FILENAME)
 @}
 
-END @{ a_fine_file(_filename_) @}
+END @{ endfile(_filename_) @}
 @c endfile
 @end example
 
@@ -24135,8 +24163,8 @@ semplifichi la scrittura del programma principale.
 
 @sidebar Allora perch@'e @command{gawk} ha @code{BEGINFILE} e @code{ENDFILE}?
 
-Ci si chieder@`a, probabilmente: perch@'e, se le funzioni 
@code{a_inizio_file()} e
-@code{a_fine_file()} possono eseguire il compito, @command{gawk} prevede i
+Ci si chieder@`a, probabilmente: perch@'e, se le funzioni @code{beginfile()} e
+@code{endfile()} possono eseguire il compito, @command{gawk} prevede i
 criteri di
 ricerca @code{BEGINFILE} e @code{ENDFILE}?
 
@@ -24409,7 +24437,7 @@ function disable_assigns(argc, argv,    i)
 @}
 
 BEGIN @{
-    if (Disabilita_variabili)
+    if (No_command_assign)
         disable_assigns(ARGC, ARGV)
 @}
 @c endfile
@@ -24418,7 +24446,7 @@ BEGIN @{
 Il programma va poi eseguito in questo modo:
 
 @example
-awk -v Disabilita_variabili=1 -f noassign.awk -f vostro_programma.awk *
+awk -v No_command_assign=1 -f noassign.awk -f vostro_programma.awk *
 @end example
 
 La funzione esegue un ciclo che esamina ogni argomento.
@@ -24426,10 +24454,10 @@ Antepone @samp{./} a
 qualsiasi argomento che abbia la forma di un assegnamento
 di variabile, trasformando cos@`{@dotless{i}} quell'argomento in un @value{FN}.
 
-L'uso di @code{Disabilita_variabili} consente di disabilitare assegnamenti di
+L'uso di @code{No_command_assign} consente di disabilitare assegnamenti di
 variabile dati sulla riga di comando al momento dell'invocazione,
 assegnando alla variabile un valore @dfn{vero}.
-Se non viene impostata la variabile @`e inizializzata a zero (cio@`e
+Se non viene impostata, la variabile @`e inizializzata a zero (cio@`e
 @dfn{falso}), e gli argomenti sulla riga di comando
 non vengono modificati.
 
@@ -25398,7 +25426,6 @@ piccolo programma in C che genera la lista dei gruppi 
come suo output.
  * December 2010, move to ANSI C definition for main().
  */
 
-/* Per OS/2, non fare nulla. */
 #if HAVE_CONFIG_H
 #include <config.h>
 #endif
@@ -25426,9 +25453,7 @@ main(int argc, char **argv)
 @c endfile
 @ignore
 @c file eg/lib/grcat.c
-#ifdef ZOS_USS
-        printf("%s:%ld:", g->gr_name, (long) g->gr_gid);
-#else
+#ifdef HAVE_STRUCT_GROUP_GR_PASSWD
 @c endfile
 @end ignore
 @c file eg/lib/grcat.c
@@ -26523,41 +26548,58 @@ da implementare con @command{gawk}; basta usare la 
variabile predefinita
 @c file eg/prog/egrep.awk
 # Arnold Robbins, arnold@@skeeve.com, Public Domain
 # May 1993
+# Revised September 2020
 
 @c endfile
 @end ignore
 @c file eg/prog/egrep.awk
 # Opzioni:
 #    -c    conta le righe trovate
-#    -s    silenziosa: genera solo il codice di ritorno
-#    -v    inverte test, successo se @dfn{regexp} non presente
+#    -e    l'argomento @`e un'espressione regolare
 #    -i    ignora maiuscolo/minuscolo
 #    -l    stampa solo nomi file
-#    -e    espressione da ricercare
+#    -n    aggiungi numeri linea in output
+#    -q    quieto - usa solo il codice di ritorno
+#    -s    silenzioso - non stampa messaggi di errore
+#    -v    inverte test, successo se espression non trovata
+#    -x    l'intera linea deve corrispondere
 #
-# Richiede la funzione getopt() e il programma di libreria
-#   che gestisce il passaggio da un file dati al successivo
+# Richiede la funzione getopt()
+# Usa IGNORECASE, BEGINFILE ed ENDFILE
+# Chiamare immettendo: gawk -f egrep.awk -- opzioni ...
 
 BEGIN @{
-    while ((c = getopt(ARGC, ARGV, "ce:svil")) != -1) @{
+    while ((c = getopt(ARGC, ARGV, "ce:ilnqsvx")) != -1) @{
         if (c == "c")
             conta_e_basta++
-        else if (c == "s")
-            non_stampare++
-        else if (c == "v")
-            inverti_test++
+        else if (c == "e")
+            criterio_di_ricerca = Optarg
         else if (c == "i")
             IGNORECASE = 1
         else if (c == "l")
             solo_nomi_file++
-        else if (c == "e")
-            criterio_di_ricerca = Optarg
+        else if (c == "n")
+            numero_riga++
+        else if (c == "q")
+            non_stampare++
+        else if (c == "s")
+            non_stampare_errori++
+        else if (c == "v")
+            inverti_test++
+        else if (c == "x")
+            riga_intera++
         else
             sintassi()
     @}
 @c endfile
 @end example
 
+@noindent
+Si noti il commento relativo alla chiamata del programma:
+Poich@'e parecchie opzioni possono essere sepcificate anche per
+@command{gawk}, occorre immettere @option{--} per far s@`@{dotless{i}} che
+@command{gawk} non prosegua nell'analisi delle opzioni.
+
 Nel seguito c'@`e il codice che gestisce il comportamento specifico di
 @command{egrep}.  Se non @`e fornito esplicitamente alcun criterio di ricerca
 tramite l'opzione @option{-e}, si usa il primo argomento sulla riga di
@@ -26574,80 +26616,65 @@ vengano scritti prima di ogni riga di output 
corrispondente:
     if (criterio_di_ricerca == "")
         criterio_di_ricerca = ARGV[Optind++]
 
+    if (criterio_di_ricerca == "")
+        sintassi()
+
     for (i = 1; i < Optind; i++)
         ARGV[i] = ""
+
     if (Optind >= ARGC) @{
         ARGV[1] = "-"
         ARGC = 2
     @} else if (ARGC - Optind > 1)
-        servono_nomi_file++
-
-#    if (IGNORECASE)
-#        criterio_di_ricerca = tolower(criterio_di_ricerca)
+        elabora_nomi_file++
 @}
 @c endfile
 @end example
 
-Le ultime due righe sono solo dei commenti, in quanto non necessarie in
-@command{gawk}.  Per altre versioni di
-@command{awk}, potrebbe essere necessario utilizzarle come istruzioni
-effettive (togliendo il "#").
+La regola @code{BEGINFILE} viene eseguita quando si inizia a
+elaborare un nuovo file.  In questo caso, essa @`e piuttosto semplice;
+inizializza la variabile @code{contatore_file} a zero.
+@code{contatore_file} viene incrementata ogni volta che una riga
+nel file corrente corrisponde all'espressione di ricerca.
 
-Il prossimo insieme di righe dovrebbe essere decommentato
-se non si sta usando @command{gawk}.
-Questa regola converte in minuscolo tutti i caratteri della riga in input,
-se @`e stata specificata l'opzione @option{-i}.@footnote{Inoltre, qui si
-introduce un errore subdolo; se una corrispondenza viene trovata, viene
-inviata in output la riga tradotta, non quella originale.}
-La regola @`e
-commentata perch@'e non @`e necessaria se si usa @command{gawk}:
+Qui si implementa anche l'opzione @option{-s}.
+Si controlla se @code{ERRNO} @`e stato impostato,
+e se l'opzione @option{-s} era stata specificata.
+In tal caso, @`e necessario passare al file successivo
+[di solito, perch@'e questo file non @`e leggibile].
+Altrimenti @command{gawk} termina l'esecuzione
+con un messaggio di errore:
 
 @example
 @c file eg/prog/egrep.awk
-#@{
-#    if (IGNORECASE)
-#        $0 = tolower($0)
-#@}
-@c endfile
-@end example
-
-La funzione @code{a_inizio_file()} @`e chiamata dalla regola in 
@file{ftrans.awk}
-quando ogni nuovo file viene elaborato.  In questo caso, non c'@`e molto da 
fare;
-ci si limita a inizializzare una variabile @code{contatore_file} a zero.
-@code{contatore_file} serve a ricordare quante righe nel file corrente
-corrispondono al criterio di ricerca.
-Scegliere come nome di parametro @code{da_buttare} indica che sappiamo che
-@code{a_inizio_file()} @`e chiamata con un parametro, ma che noi non siamo
-interessati al suo valore:
-
-@example
-@c file eg/prog/egrep.awk
-function a_inizio_file(da_buttare)
-@{
+BEGINFILE @{
     contatore_file = 0
+    if (ERRNO && nessun_errore)
+        nextfile
 @}
 @c endfile
 @end example
 
-La funzione @code{endfile()} viene chiamata dopo l'elaborazione di ogni file.
-Ha influenza sull'output solo quando l'utente desidera un contatore del
-numero di righe che sono state individuate.  @code{non_stampare} @`e vero nel
-caso si desideri solo il codice di ritorno.
-@code{conta_e_basta} @`e vero se si desiderano solo i contatori
-delle righe trovate.  @command{egrep}
-quindi stampa i contatori solo se
-sia la stampa che il conteggio delle righe sono stati abilitati.
-Il formato di output deve tenere conto del numero di file sui quali si
-opera.  Per finire, @code{contatore_file} @`e aggiunto a @code{totale}, in
-modo da stabilire qual @`e il numero totale di righe che ha soddisfatto il
-criterio di ricerca:
+La regola @code{ENDFILE} viene eseguita alla fine dell'elaborazione
+di ogni file.  Genera dell'output solo quando l'utente richiede un
+contatore del numero di righe che sono state trovate corrispondere.
+
+La variabile @code{non_stampare} @`e vera qualora si chieda di
+impostare solo il codice di ritorno.
+La variabile @code{conta_e_basta} @`e vera qualora si chieda solo
+il numero delle righe che sono state trovare corrispondere.
+@command{egrep} quindi stampa il contatore delle corrispondenze
+trovate solo se sia la stampa che il conteggio righe sono richieste.
+Il formato dell'output dev'essere adattato, a seconda del numero di
+file da elaborare.  Infine @code{contatore_file} @`e aggiunto
+a @code{totale}, in modo da poter stabilire il numero totale di
+righe corrispondenti all'espressione cercata:
 
 @example
 @c file eg/prog/egrep.awk
-function endfile(file)
-@{
+ENDFILE @{
     if (! non_stampare && conta_e_basta) @{
-        if (servono_nomi_file)
+        if (elabora_nomi_file)
             print file ":" contatore_file
         else
             print contatore_file
@@ -26660,18 +26687,18 @@ function endfile(file)
 @c endfile
 @end example
 
-Si potrebbero usare i criteri di ricerca speciali @code{BEGINFILE} ed
-@code{ENDFILE}
-(@pxref{BEGINFILE/ENDFILE}),
-ma in quel caso il programma funzionerebbe solo usando @command{gawk}.
-Inoltre, questo esempio @`e stato scritto prima che a @command{gawk} venissero
-aggiunti i criteri speciali @code{BEGINFILE} ed @code{ENDFILE}.
-
 La regola seguente fa il grosso del lavoro per trovare righe corrispondenti
 al criterio di ricerca fornito.  La variabile
-@code{corrisponde} @`e vera se la riga @`e individuata dal criterio di ricerca.
-Se l'utente chiede invece le righe che non corrispondono, il senso di
-@code{corrisponde} @`e invertito, usando l'operatore @samp{!}.
+@code{corrisponde} @'e vera (diversa da zero) se la riga @'e individuata
+dal criterio di ricerca.
+Se l'utente ha specificato che la riga intera deve corrispondere
+(con l'opzione @option{-x}), il codice controlla la condizione
+verificando i valori delle variabili @code{RSTART} e @code{RLENGTH}.
+Se questi indicano che la corrispondenza non coincide con l'intera
+riga, la variabile @code{corrisponde} @`e impostata a zero (falsa).
+
+Se l'utente chiede invece le righe che @emph{non} corrispondono,
+il senso di @code{corrisponde} @`e invertito, usando l'operatore @samp{!}.
 @code{contatore_file} @`e incrementato con il valore di
 @code{corrisponde}, che vale uno o zero, a seconda che la corrispondenza sia
 stata trovata oppure no.  Se la riga non corrisponde, l'istruzione
@@ -26693,6 +26720,9 @@ dai due punti (@code{:}):
 @c file eg/prog/egrep.awk
 @{
     corrisponde = ($0 ~ criterio_di_ricerca)
+    if (corrisponde && riga_intera && (RSTART != 1 || RLENGTH != length()))
+         corrisponde = 0
+
     if (inverti_test)
         corrisponde = ! corrisponde
 
@@ -26706,12 +26736,15 @@ dai due punti (@code{:}):
             nextfile
 
         if (solo_nomi_file) @{
-            print nome_file
+            print FILENAME
             nextfile
         @}
 
-        if (servono_nomi_file)
-            print nome_file ":" $0
+        if (elabora_nomi_file)
+            if (numero_riga)
+               print FILENAME ":" FNR ":" $0
+            else
+               print FILENAME ":" $0
         else
             print
     @}
@@ -26720,7 +26753,8 @@ dai due punti (@code{:}):
 @end example
 
 La regola @code{END} serve a produrre il codice di ritorno corretto.  Se
-non ci sono corrispondenze, il codice di ritorno @`e uno; altrimenti, @`e zero:
+non ci sono corrispondenze, il codice di ritorno @`e uno;
+altrimenti, @`e zero:
 
 @example
 @c file eg/prog/egrep.awk
@@ -27074,7 +27108,7 @@ I campi in questi file sono separati da caratteri 
@samp{:}:
 
 @example
 @c file eg/prog/id.awk
-function stampa_primo_campo(str,  a)
+function ottieni_primo_campo(str,  a)
 @{
     if (str != "") @{
         split(str, a, ":")
@@ -27234,6 +27268,7 @@ funzione @code{sintassi()} che ne descrive le opzioni:
 
 @c endfile
 @end ignore
+@c file eg/prog/split.awk
 function sintassi()
 @{
     print("Uso: split [-l contatore]  [-a lunghezza-suffisso] [file 
[nome-output-file]]") > "/dev/stderr"
@@ -27256,13 +27291,13 @@ BEGIN @{
     Lunghezza_suffisso = 2
     Contatore_righe = 1000
     Contatore_byte = 0
-    Output_file = "x"
+    Outfile = "x"
 
     analizza_argomenti()
 
     inizializza_suffisso()
 
-    Output = (Output_file calcola_suffisso())
+    Output_file = (Outfile calcola_suffisso())
 @}
 @c endfile
 @end example
@@ -27305,7 +27340,7 @@ function analizza_argomenti(   i, c, l, modificatore)
 
         # Controlla se il prefisso @`e differente
         if (ARGV[Optind]) @{
-            Output_file = ARGV[Optind]
+            Outfile = ARGV[Optind]
             ARGV[Optind] = ""
 
             if (++Optind < ARGC)
@@ -27455,19 +27490,19 @@ opzioni mutuamente esclusive, lo si fa semplicemente 
usando due regole,
 una per quando @code{Contatore_righe} @`e maggiore di zero, e l'altra
 per quando @code{Contatore_byte} @`e maggiore di zero.
 
-La variabile @code{contorighe} conta quante righe sono state elaborate
+La variabile @code{righe_totali} conta quante righe sono state elaborate
 finora.  Quando il suo valore supera @code{Contatore_righe}, occorre
 chiudere il file precedente e passare ad uno nuovo:
 
 @example
 @c file eg/prog/split.awk
 Contatore_righe > 0 @{
-    if (++contorighe > Contatore_righe) @{
-        close(Output)
-        Output = (Outfile calcola_suffisso())
-        contorighe = 1
+    if (++righe_totali > Contatore_righe) @{
+        close(Output_file)
+        Output_file = (Outfile calcola_suffisso())
+        righe_totali = 1
     @}
-    print > Output
+    print > Output_file
 @}
 @c endfile
 @end example
@@ -27485,25 +27520,25 @@ Il codice che segue fa esattamente tutto ci@`o:
 @c file eg/prog/split.awk
 Contatore_byte > 0 @{
     # `+ 1' @`e per il carattere di fine riga che va aggiunto
-    if (contorighe + length($0) + 1 > Contatore_byte) @{ # Supera il limite
+    if (righe_totali + length($0) + 1 > Contatore_byte) @{ # Supera il limite
         # Calcola byte a inizio record
-        byte_iniziali = Contatore_byte - contorighe
+        byte_iniziali = Contatore_byte - righe_totali
 
         # Scrivi i byte iniziali
-        printf("%s", substr($0, 1, byte_iniziali)) > Output
+        printf("%s", substr($0, 1, byte_iniziali)) > Output_file
 
         # Chiudi il vecchio file, aprine uno nuovo
-        close(Output)
-        Output = (Outfile calcola_suffisso())
+        close(Output_file)
+        Output_file = (Outfile calcola_suffisso())
 
         # Prepara i primi byte per il nuovo file
         $0 = substr($0, byte_iniziali + 1)  # Byte finali del record
-        contorighe = 0
+        righe_totali = 0
     @}
 
     # Scrivi record intero o la parte finale restante
-    contorighe += length($0) + 1
-    print > Output
+    righe_totali += length($0) + 1
+    print > Output_file
 @}
 @c endfile
 @end example
@@ -27514,7 +27549,7 @@ file in output:
 @example
 @c file eg/prog/split.awk
 END @{
-    close(Output)
+    close(Output_file)
 @}
 @c endfile
 @end example
@@ -28136,13 +28171,13 @@ BEGIN @{
 @c endfile
 @end example
 
-La funzione @code{a_inizio_file()} @`e semplice; si limita ad azzerare i 
contatori
+La funzione @code{beginfile()} @`e semplice; si limita ad azzerare i contatori
 di righe, parole, caratteri e byte, e salva il valore corrente di @value{FN} in
 @code{nome_file}:
 
 @example
 @c file eg/prog/wc.awk
-function a_inizio_file(file)
+function beginfile(file)
 @{
     righe = parole = caratteri = byte = 0
     nome_file = FILENAME
@@ -28150,14 +28185,14 @@ function a_inizio_file(file)
 @c endfile
 @end example
 
-La funzione @code{a_fine_file()} aggiunge i numeri del file corrente al totale
+La funzione @code{endfile()} aggiunge i numeri del file corrente al totale
 di righe, parole, e caratteri.  Poi stampa i numeri relativi al file appena
 letto.  La funzione
-@code{a_inizio_file()} azzera i numeri relativi al @value{DF} seguente:
+@code{beginfile()} azzera i numeri relativi al @value{DF} seguente:
 
 @example
 @c file eg/prog/wc.awk
-function a_fine_file(file)
+function endfile(file)
 @{
     totale_righe += righe
     totale_parole += parole
@@ -28389,6 +28424,7 @@ Ecco il programma:
 # alarm.awk --- impostare una sveglia
 #
 # Richiede la funzione di libreria getlocaltime()
+# che si trova in gettime.awk
 @c endfile
 @ignore
 @c file eg/prog/alarm.awk
@@ -28466,15 +28502,15 @@ prima di far scattare la sveglia:
     # (p.es., impostare `alarm 5:30' alle 9 del mattino
     # vuol dire far suonare la sveglia alle 5:30 pomeridiane)
     # aggiungere 12 all'ora richiesta
-    if (hour < 12 && adesso["hour"] > ora)
+    if (ora < 12 && adesso["hour"] > ora)
         ora += 12
 
     # imposta l'ora in secondi dalla mezzanotte
     sveglia = (ora * 60 * 60) + (minuto * 60)
 
     # ottieni l'ora corrente in secondi dalla mezzanotte
-    corrente = (now["hour"] * 60 * 60) + \
-               (now["minute"] * 60) + now["second"]
+    corrente = (adesso["hour"] * 60 * 60) + \
+               (adesso["minute"] * 60) + adesso["second"]
 
     # quanto restare appisolati
     sonno = sveglia - corrente
@@ -29276,6 +29312,26 @@ La riga @`e poi stampata nel file di output:
             print riga > file_corrente
             continue
         @}
+        # gestisci istruzioni che convertono caratteri accentati
+        if (index(riga, "gsub(\"@@@@") > 0) @{
+            gsub("@@@{","@{",riga)
+            gsub("@@@}","@}",riga)
+            gsub("@@@@","@@",riga)
+            print riga > file_corrente
+            continue
+        @}
+        # istruzioni che convertono caratteri accentati
+        gsub("@@`a","à",riga)
+        gsub("@@`e","è",riga)
+        gsub("@@'e","é",riga)
+        gsub("@@`@{@@dotless@{i@}@}","ì",riga)
+        gsub("@@`o","ò",riga)
+        gsub("@@`u","ù",riga)
+        # riga contiene ancora caratteri @@?
+        if (index(riga, "@@") == 0) {
+            print riga > file_corrente
+            continue
+        @}
         n = split(riga, a, "@@")
         # if a[1] == "", vuol dire riga che inizia per @@,
         # non salvare un @@
@@ -29639,6 +29695,7 @@ Il programma @`e il seguente:
 # Arnold Robbins, arnold@@skeeve.com, Public Domain
 # July 1993
 # December 2010, minor edits
+# Antonio Colombo, October 2020, test for Italian accented letters
 @c endfile
 @end ignore
 @c file eg/prog/igawk.sh
@@ -30306,7 +30363,7 @@ programma seguendo questa indicazione.
 
 @item
 Perch@'e il programma @file{wc.awk} (@pxref{Programma wc}) non pu@`o
-limitarsi a usare il valore di @code{FNR} nella funziona @code{a_fine_file()}?
+limitarsi a usare il valore di @code{FNR} nella funzione @code{endfile()}?
 Suggerimento: Esaminare il codice
 @iftex
 nella
@@ -32803,7 +32860,7 @@ $ @kbd{echo $LANGUAGE}
 @end example
 
 @noindent
-Il passo succesivo @`e creare le directory:
+Il passo successivo @`e creare le directory:
 
 @example
 $ @kbd{mkdir en_US.UTF-8 en_US.UTF-8/LC_MESSAGES}

-----------------------------------------------------------------------

Summary of changes:
 doc/it/ChangeLog   |   5 +
 doc/it/gawktexi.in | 485 ++++++++++++++++++++++++++++++-----------------------
 2 files changed, 276 insertions(+), 214 deletions(-)


hooks/post-receive
-- 
gawk



reply via email to

[Prev in Thread] Current Thread [Next in Thread]