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

[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? 



Reply to: