lettura file con zcat

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
meme_14
Prode Principiante
Messaggi: 14
Iscrizione: venerdì 14 aprile 2017, 7:54
Sesso: Femminile

lettura file con zcat

Messaggio 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!
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: lettura file con zcat

Messaggio 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
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
meme_14
Prode Principiante
Messaggi: 14
Iscrizione: venerdì 14 aprile 2017, 7:54
Sesso: Femminile

Re: lettura file con zcat

Messaggio 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!
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 3 ospiti