[Linuxtrent] Re: manipolazione file

  • From: Guido Brugnara <gdo@xxxxxxxxx>
  • To: linuxtrent <linuxtrent@xxxxxxxxxxxxx>
  • Date: Tue, 2 Apr 2019 16:14:51 +0200 (CEST)

----- Il 2-apr-19, alle 15:55, mauro cavagna <cavagna.mauro@xxxxxxxxx> ha 
scritto: 

Grazie Lele e Guido,
Molto difficile, te lo sconsiglio :-)

L'ho chiesto perchè non ho dimestichezza con Python e nessuna esperienza con
Perl.
Pensavo di avere più padronanza con la bash, ma dopo aver visto il codice di
Guido mi sono ricreduto ;(

A tal proposito Guido mi puoi dare qualche informazione in più?
Se inserisco il nome del mio file al posto di 'FILE' non ottengo nessun
risultato ... Inoltre quale sintassi devo usare per avviare il comando su 
tutti
i miei file?

il costrutto << 'XXX' .......XXX serve nella shell per inglobare nello script 
un blocco di testo che passi ad uno script quale STANDARD INPUT. 

Se ha un file da elaborafe MYFILE.txt e che vuoi salvare nel file MYRESULT.txt 
allora lo script bash diventa: 

( # reitero le righe dallo STDIN 
while read -r ROW 
do 
# invio allo STDOUT la riga sostituendo il secondo carattere (si presume sia 
una cifra 1..9) con la cifra inferiore 
# N.B. si presume che la cifra non sia 0 
echo "${ROW:0:1}$[${ROW:1:1}-1]${ROW:2:-1}" 
done 
) < MYFILE.txt > MYRESULT.txt 

Se i tuoi file sono tutti presenti nella cartella 
MYDIR="/non/so/quale/persorso/sia" 

for FILE in $MYDIR/* 
do 
(while read -r N; do echo "${N:0:1}$[${N:1:1}-1]${N:2:-1}"; done) <$FILE 
$FILE.new 
mv $FILE $FILE.old 
mv $FILE.new $FILE 
done 

bye 
gdo 

Perdonate la mia ignoranza ma non ho mai usato questo tipo di codice

Grazie ancora per il prezioso aiuto

Mauro

Il giorno mar 2 apr 2019 alle ore 15:40 Lele Gaifax < [
mailto:lele@xxxxxxxxxxxxxxx ;| lele@xxxxxxxxxxxxxxx ] > ha scritto:

Guido Brugnara < [ mailto:gdo@xxxxxxxxx ;| gdo@xxxxxxxxx ] > writes:

mylinux:~$ (while read -r N; do echo "${N:0:1}$[${N:1:1}-1]${N:2:999}"; 
done) <<
'FILE'

Ohmmaddai, se ne impara sempre una, non avevo mai visto quell'espansione!

Grazie Guido,
ciao, lele.
--
nickname: Lele Gaifax | Quando vivrò di quello che ho pensato ieri
real: Emanuele Gaifas | comincerò ad aver paura di chi mi copia.
mailto:lele@xxxxxxxxxxxxxxx ;| lele@xxxxxxxxxxxxxxx ] | -- Fortunato Depero,
1929.
--
Per iscriversi (o disiscriversi), basta spedire un messaggio con OGGETTO
"subscribe" (o "unsubscribe") a mailto: ;[
mailto:linuxtrent-request@xxxxxxxxxxxxx ;| linuxtrent-request@xxxxxxxxxxxxx ]

--
"Tutto ciò che è necessario per il trionfo del male, è che gli uomini buoni 
non
facciano niente."
Edmund Burke

Other related posts: