Pagina 1 di 1

Problema con spazi in lettura file

Inviato: venerdì 3 marzo 2017, 11:35
da ducarpit
Ciao a tutti,
ho un problema con gli spazi in lettura dal file; mi spiego: ho un file txt (aziende.txt) come questo

Codice: Seleziona tutto

Ferrari Spa,
Fiat Spa
Nello script ho problemi in questa sezione:

Codice: Seleziona tutto

for buffer in $(cat aziende.txt)
do
    name=$(echo $buffer|cut -f1 -d,)
    ...
    ...
    ...
done
exit 0
Il problema è che invece di prendermi "Ferrari Spa" e "Fiat Spa", mi prende 4 valori quindi "Ferrari" "Spa" "Fiat" "Spa"....praticamente mi conta lo spazio come fosse un separatore, mentre io voglio che legga anche quello...
Come posso fare? Non sono riuscito a trovare una soluzione...
Grazie a tutti

Re: Problema con spazi in lettura file

Inviato: venerdì 3 marzo 2017, 13:49
da crap0101
il problema è il for (con l'uso di $(cat ...)) che appunto divide il risultato del comando in base agli spazi.
In generale è un pessimo metodo per iterare sulle linee di un file, soprattutto dal momento che la stragrande maggioranza dei comandi da shell sono line-oriented.

Re: Problema con spazi in lettura file

Inviato: venerdì 3 marzo 2017, 14:58
da ducarpit
crap0101 [url=http://forum.ubuntu-it.org/viewtopic.php?p=4963468#p4963468][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:il problema è il for (con l'uso di $(cat ...)) che appunto divide il risultato del comando in base agli spazi.
In generale è un pessimo metodo per iterare sulle linee di un file, soprattutto dal momento che la stragrande maggioranza dei comandi da shell sono line-oriented.
ok...metodo alternativo che non crei il problema? :D :D :D

Re: Problema con spazi in lettura file

Inviato: venerdì 3 marzo 2017, 22:11
da thece
:ciao:

Codice: Seleziona tutto

#!/bin/bash

cat "aText File.txt" | while read LINE; do
        echo ">$LINE<"
done

exit 0

Re: Problema con spazi in lettura file

Inviato: lunedì 6 marzo 2017, 11:39
da ducarpit
OTTIMO!!! Ho testato proprio adesso, scusa il ritardo. Ho sostituito i parametri, adattato il codice alle mie esigenze e sembrerebbe che tutto funzioni. Faccio qualche altra prova ma credo sia tutto OK. Metto il posto come RISOLTO?