2012-06-01 21 views
8

È possibile cercare in un file utilizzando shell e quindi sostituire un valore? Quando installo un servizio mi piacerebbe essere in grado di cercare una variabile in un file di configurazione e quindi sostituire/inserire le mie impostazioni in quel valore.Trova e sostituisci script di shell

+0

Certo che puoi, usa sed! – Mithrandir

risposta

20

Certo, puoi farlo usando sed o awk. esempio:

sed -i 's/Andrew/James/g' /home/oleksandr/names.txt 
0

Generalmente uno strumento come awk o sed viene utilizzato per questo.

$ sed -i 's/ugly/beautiful/g' /home/bruno/old-friends/sue.txt 
1

È possibile utilizzare sed per fare questo:

sed -i 's/toreplace/yoursetting/' configfile 

sed è probabilmente disponibili su ogni Unix come sistema là fuori. Se si desidera sostituire più di un avvenimento è possibile aggiungere un g al s-comando:

sed -i 's/toreplace/yoursetting/g' configfile 

Fare attenzione poiché questo può distruggere completamente il vostro configfile se non si specifica correttamente la toreplace valore. sed supporta anche le espressioni regolari nella ricerca e nella sostituzione.

3
sed -i 's/variable/replacement/g' *.conf 
6

È possibile utilizzare sed per eseguire la ricerca/sostituzione. Io di solito faccio questo da uno script di shell bash, e spostare il file originale che contiene i valori da sostituire con un nuovo nome, ed eseguire sed scrivendo l'uscita al mio nome del file originale in questo modo:

#!/bin/bash 
mv myfile.txt myfile.txt.in 

sed -e 's/PatternToBeReplaced/Replacement/g' myfile.txt.in > myfile.txt. 

Se don' t specificare un output, la sostituzione andrà a stdout.

1
filepath="/var/start/system/dir1" 
searchstring="test" 
replacestring="test01" 

i=0; 

for file in $(grep -l -R $searchstring $filepath) 
do 
    cp $file $file.bak 
    sed -e "s/$searchstring/$replacestring/ig" $file > tempfile.tmp 
    mv tempfile.tmp $file 

    let i++; 

    echo "Modified: " $file 
done 
+0

Potresti controllare il 'codice di inserimento qui 'nel tuo codice? Probabilmente non dovrebbe essere lì. A proposito: nella maggior parte dei casi è una buona idea fornire commenti nella soluzione o almeno riassumere l'approccio che hai scelto per affrontare il problema. –

Problemi correlati