sed / awk: modifica il file sorgente?


1

Sto provando a scrivere alcune modifiche che devo apportare a un paio di file di configurazione. Vale la pena ricordare che non sono un esperto di sed né di awk, anche se sto molto meglio con sed.

In questo momento, sto facendo:

sed '/setting.name/c setting.name: newvalue' </etc/foo.conf >tmpfile.tmp && mv tmpfile.tmp /etc/foo.conf

Ma sicuramente c'è un modo migliore? Forse con awk?


2
man sedmi dice che dovresti usare l' -i, --in-placeopzione (se disponibile nella tua versione di sed. Per awk non sembra esserci una tale opzione ... forse vuoi scrivere un breve script per farlo.
Bobby

Argh. RTFM, Joe !!
Joe Fruchey,

Risposte:


3

Un modo migliore:

 sed -i.bak 's/Old Info/New Info/' file.cfg

Ciò modifica il file in atto, ma salva l'originale come 'nome.cfg.bak'.

Se sai tutte le cose da cambiare, probabilmente vorrai che uno script lo faccia come:

 sed -i.bak -e 's/first setting/new first/' -e 's/next setting/new next/' -e 's/etc/new etc/' file.cfg
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.