(ES)Buscar y reemplazar texto de un archivo con bash desde la terminal
Este tip es muy útil si estás desarrollando scripts que leen desde ficheros y quieres manipularlos. Por ejemplo si lees números decimales que usan coma en vez de punto. con un único comando puedes buscar y reemplazar el texto que quieras:
sed s/ abc / xyz /g archivo1 > archivo2
En este ejemplo, se sustituirá las palabras “abc” que encuentre en archivo1 por “xyz” y escribirá el resultado en archivo2. Para sustituir puntos por comas:
sed s/,/./g precioscoma > preciospunto
Espero que os sea útil. Edit: Si queréis trabajar con variables (sustituir el valor de una variable por el de otra) podéis hacerlo así:
sed "s|$var1|$var2|" archivo1 > archivo2
Comments
oswaldo: HOla, estoy utilizando sed “s|$var1|$var2|” archivo1 > archivo2 pero quiero que sobreescriba el archivo original, intento con sed “s|$var1|$var2|” archivo1 > archivo1 pero archivo1 se queda en blanco, sabes como podría sobreescribir el archivo? gracias.
admin: Hola Oswaldo, Modificar un archivo de esa manera suele dar muchos errores. Te recomiendo que utilices un archivo auxiliar. Algo así: sed “s|$var1|$var2|” archivo1 > archivo2 mv -f archivo2 archivo1 Lo que hará que tras escribir el resultado en archivo2, este sobreescriba a archivo1 Gracias por el comentario y por la visita!
oswaldo: Lo intentaré de esa forma, gracias por la información.
Diomesles: Buena entrada!: Por si queremos hacer el “buscar-reemplazar” en mas de un fichero: http://www.sysadmit.com/2015/07/linux-reemplazar-texto-en-archivos-con-sed.html
Article automatically imported from my old wordpress blog. Here only for reference. Possible format errors and probable missing images. Sorry about that.