Pagina 1 di 1

lettura file con zcat

Inviato: mercoledì 19 aprile 2017, 15:40
da meme_14
Ciao a tutti,
ho dei log in formato .gz e uso lo zcat per decomprimerli.
Voglio leggere il file riga per riga e dopo aver fatto alcune modifiche alle righe creo un nuovo file.

Codice: Seleziona tutto

while read -r line
.      do
 ....modifiche su righe... 

done <'zcat nome.log.data'
Mi da il seguente errore sullo zcat: No such a file or directory
Come posso fare?
Grazie mille!

Re: lettura file con zcat

Inviato: mercoledì 19 aprile 2017, 20:33
da crap0101
il

Codice: Seleziona tutto

done < qualcosa
serve per leggere da un file, quello che stai facendo è leggere una stringa.. letteralmente

Codice: Seleziona tutto

zcat nome.log.data
Nel caso volessi leggere il risultato del comando

Codice: Seleziona tutto

zcat nome.log.data
devi usare gli apici inversi per eseguire il `comando` o il $(comando), ma probabilmente non otterresti comunque quello che vuoi (e dovresti usare in ogni caso <<< anzichè < ).
Piuttosto potresti fare una cosa del genere:

Codice: Seleziona tutto

zcat FILE.data | while read line;do MODIFICHE; done | gzip -c > NUOVO_FILE.data

Re: lettura file con zcat

Inviato: giovedì 20 aprile 2017, 8:02
da meme_14
Grazie!
Ora provo con il tuo metodo. Ma lo gzip mi comprimerebbe il file?

Io volevo leggere il file log che è compresso riga per riga. Modifico le righe e poi creo un nuovo file.
Ho trovato su internet che il

Codice: Seleziona tutto

while read -r line
         do 
            ...........
         done < "$FILENAME"
dovrebbe leggere il file.
Inizialmente avevo messo l'output dello zcat in un nuovo file:

Codice: Seleziona tutto

zcat nome.log > FILENAME
. E facevo il while su questo file e andava correttamente.
Il problema è che creo troppe copie e anche usando il comando rm lo script è troppo lento e non ottimale. Per questo ho sostituito $FILENAME con lo zcat del log per evitare di creare troppe copie.

Grazie ancora!