Da man gzip
puoi leggere quel gzip
ped possono essere semplicemente concatenati:
UTILIZZO AVANZATO È possibile concatenare più file compressi. In questo caso, gunzip estrarrà tutti i membri contemporaneamente. Ad esempio:
gzip -c file1 > foo.gz gzip -c file2 >> foo.gz Then gunzip -c foo is equivalent to cat file1 file2
Questo potrebbe anche essere fatto usando cat
per il gzip
ped, ad esempio:
seq 1 4 > A && gzip A
echo 5 > B && gzip B
#now 1 to 4 is in A.gz and 5 in B.gz, we want 1 to 5 in C.gz:
cat A.gz B.gz > C.gz && zcat C.gz
1
2
3
4
5
#or for appending B.gz to A.gz:
cat B.gz >> A.gz
Per farlo senza un file esterno per la tua riga da aggiungere, procedi come segue:
echo "this is the new line" | gzip - | cat - >> original_file.gz
Quanto è grande il tuo tavolo dei dipendenti? A meno che tu non abbia un milione di dipendenti e ogni record richieda migliaia di byte, probabilmente non vale nemmeno la pena di comprimere l'output.
Quasi certamente non vale la pena di comprimerlo mentre viene creato il file di output - quindi perché non eseguire l'output solo in testo normale non compresso, eseguire count=$(wc -l out1) ; echo "T$count" >> out1
, quindi comprimerlo con gzip out1
?
in alternativa, basta eseguire qualche variazione di select count(*) from employee
prima del spool off
comando.
Stavo lottando con una sfida simile:aggiungere alcune righe a un dump sql compresso. La mia soluzione era basata sulla risposta di @Fiximan
echo 'append this string' | gzip >> out.gz