sed: sostituire testo in un file compresso

In qualche precedente articolo ho riepilogato una serie di comandi utili per sed. In particolare un paio di esigenze che capitano spesso sono la rimozione di righe con un determinato testo oppure la sostituzione di testo con altro.

Per sostituire del testo nel file usando una regexp

sed -i "s/password=MD5(.*)/xxxxxx/" file.txt

cancellare una riga dove appare un certo testo

sed -i "/password/d" file.txt

Se però dobbiamo lavorare con dei file compressi, non è possiible farlo direttamente. Ed ecco un semplice script che legge tutti i file .gz, ne modifica il contneuto e ne reimporta la data/ora originale:

for f in ./*.gz; do
  cp -p "$f" "$f~" &&
  gzip -cd "$f~" | sed "s/password=MD5(.*)/xxxxx/" | gzip > "$f"
  touch -d "$(date -R -r $f~)" $f
done

enjoy!

Ti interessa acquistare un dominio a prezzi ultraconvenienti? clicca qui

Se hai trovato utili le informazioni su questo blog,
Fai una donazione!
Clicca sul bottone qui sotto o almeno clicca sul banner pubblicitario 🙂



Commenta