2012-06-01 44 views
8

¿Es posible buscar en un archivo utilizando shell y luego reemplazar un valor? Cuando instalo un servicio, me gustaría poder buscar una variable en un archivo de configuración y luego reemplazar/insertar mi propia configuración en ese valor.Buscar y reemplazar en scripts de shell

+0

Sure you can, use sed! – Mithrandir

Respuesta

20

Claro, puedes hacer esto usando sed o awk. Ejemplo de sed:

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

En general, se utiliza una herramienta como awk o sed para esto.

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

Puede usar sed para hacer esto:

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

sed es, probablemente, disponible en todos los Unix como sistema por ahí. Si desea reemplazar más de una ocurrencia puede agregar una ga la s-comando:

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

tener cuidado ya que esto puede destruir por completo su configfile si no se especifica su valor toreplace correctamente. sed también admite expresiones regulares en la búsqueda y el reemplazo.

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

Puede usar sed para buscar/reemplazar. Yo suelo hacer esto desde un script de shell bash, y mover el archivo original que contiene los valores que ser sustituido por un nuevo nombre, y ejecutar SED escribir la salida a mi nombre del archivo original como esto:

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

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

Si no' t especifique una salida, la sustitución irá 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

¿Podría verificar el 'ingresar código aquí' en su código? Probablemente no debería estar allí. Por cierto: en la mayoría de los casos, es una buena idea proporcionar comentarios en su solución o, al menos, resumir el enfoque que eligió para abordar el problema. –