Problema con spazi in lettura file

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Avatar utente
ducarpit
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 299
Iscrizione: sabato 31 ottobre 2015, 13:10
Desktop: Ubuntu
Distribuzione: Ubuntu 22.04 x64
Sesso: Maschile

Problema con spazi in lettura file

Messaggio 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
“I computer sono incredibilmente veloci, accurati e stupidi. Gli uomini sono incredibilmente lenti, inaccurati e intelligenti. L'insieme dei due costituisce una forza incalcolabile.”
Albert Einstein
Avatar utente
crap0101
Rampante Reduce
Rampante Reduce
Messaggi: 8242
Iscrizione: martedì 30 ottobre 2007, 6:33
Desktop: LXDE
Distribuzione: Ubuntu 18.04.1 LTS
Sesso: Maschile
Località: TO
Contatti:

Re: Problema con spazi in lettura file

Messaggio 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.
http://www.gnu.org/ http://boinc.berkeley.edu/ http://www.python-it.org/
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
Avatar utente
ducarpit
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 299
Iscrizione: sabato 31 ottobre 2015, 13:10
Desktop: Ubuntu
Distribuzione: Ubuntu 22.04 x64
Sesso: Maschile

Re: Problema con spazi in lettura file

Messaggio 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
“I computer sono incredibilmente veloci, accurati e stupidi. Gli uomini sono incredibilmente lenti, inaccurati e intelligenti. L'insieme dei due costituisce una forza incalcolabile.”
Albert Einstein
Avatar utente
thece
Tenace Tecnocrate
Tenace Tecnocrate
Messaggi: 13164
Iscrizione: lunedì 23 aprile 2007, 14:16
Distribuzione: Debian 12 (Bookworm) - KDE

Re: Problema con spazi in lettura file

Messaggio da thece »

:ciao:

Codice: Seleziona tutto

#!/bin/bash

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

exit 0
Avatar utente
ducarpit
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 299
Iscrizione: sabato 31 ottobre 2015, 13:10
Desktop: Ubuntu
Distribuzione: Ubuntu 22.04 x64
Sesso: Maschile

Re: Problema con spazi in lettura file

Messaggio 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?
“I computer sono incredibilmente veloci, accurati e stupidi. Gli uomini sono incredibilmente lenti, inaccurati e intelligenti. L'insieme dei due costituisce una forza incalcolabile.”
Albert Einstein
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 5 ospiti