[OT] [o forse no?] bash:parsing dei files di testo
Ciao a tutti. Oggi parliamo di bash. Ho bisogno di fare uno script in bash che interpreti un file di testo che si presenta in questo formato: # commenti campo1riga1 campo2riga2 campo3riga3 campo4riga4 campo1riga2 campo2riga2 campo3riga2 campo4riga2 eccetera. Il numero di righe non è noto a priori: ho quindi pensato che un for potesse andare bene. I campi sono separati dal carattere di tabulazione, quindi /usr/bin/cut sembra tornare utile. I commenti li elimino con un grep -v ^#. Peccato che il for non legga i dati una riga alla volta ma un campo alla volta, ovvero for i in `cat $FILETESTO | grep -v ^#` ; do echo $i; echo Passo al valore successivo; done mi restituisce: campo1riga1 Passo al valore successivo campo2riga1 Passo al valore successivo ecc... mentre quello che avrei bisogno io è campo1riga1 campo2riga2 campo3riga3 campo4riga4 Passo al valore successivo campo1riga2 campo2riga2 campo3riga2 campo4riga2 Passo al valore successivo in modo da poter ritagliare ogni singolo campo con /usr/bin/cut. Sapete come posso fare per far leggere al for il file una riga per volta invece che un campo per volta? Oppure esiste qualcosa di diverso dal for per questo scopo? -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]
Re: [OT] [o forse no?] bash:parsing dei files di testo
Errata corrige: ai fini della chiarezza della mia domanda, segnalo che il file di testo è (ovviamente): # commenti campo1riga1 campo2riga1 campo3riga1 campo4riga1 campo1riga2 campo2riga2 campo3riga2 campo4riga2 E non: # commenti campo1riga1 campo2riga2 campo3riga3 campo4riga4 campo1riga2 campo2riga2 campo3riga2 campo4riga2 Scusate la distrazione. -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]
Re: [OT] [o forse no?] bash:parsing dei files di testo [RISOLTO]
Non so se esistano soluzioni più efficienti, ma quella che ho trovato va più che bene per il mio scopo: http://www.linuxgazette.com/issue54/okopnik.html -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]
Re: [OT] [o forse no?] bash:parsing dei files di testo
On Mon, 14 Feb 2005 09:28:13 +0100, Lucio [EMAIL PROTECTED] wrote: Errata corrige: ai fini della chiarezza della mia domanda, segnalo che il file di testo è (ovviamente): # commenti campo1riga1 campo2riga1 campo3riga1 campo4riga1 campo1riga2 campo2riga2 campo3riga2 campo4riga2 Non so bene cosa debba fare il tuo script, e molto dipende da questo. Le soluzioni sono sempre molteplici, ma se non e` chiaro cosa devi fare e` anche difficile provare ad indovinare. Comunque, la butto li`, prova ad abbandonare for e usa sed. a.
Re: [OT] [o forse no?] bash:parsing dei files di testo
On Mon, 14 Feb 2005 09:20:35 +0100, Lucio [EMAIL PROTECTED] wrote: Ciao a tutti. Oggi parliamo di bash. Ho bisogno di fare uno script in bash che interpreti un file di testo che si presenta in questo formato: # commenti campo1riga1 campo2riga2 campo3riga3 campo4riga4 campo1riga2 campo2riga2 campo3riga2 campo4riga2 eccetera. Il numero di righe non è noto a priori: ho quindi pensato che un for potesse andare bene. I campi sono separati dal carattere di tabulazione, quindi /usr/bin/cut sembra tornare utile. I commenti li elimino con un grep -v ^#. Peccato che il for non legga i dati una riga alla volta ma un campo alla volta, ovvero Puoi usare awk, che sembra guarda un po' fatto a posta. Ammettiamo che tu abbia bisogno (dire cosa deve fare lo script sarebbe utile) di recuperare i dati del campo 2 e 3 e di stampare prima 3 e poi 2... cat file | grep -v # | awk '{print $3,$2}' Un buon punto di partenza per awk http://www.pluto.it/journal/pj9809/awk.html ciao.