viernes, 26 de octubre de 2007

Sustituir texto en archivos

Si queremos reemplazar el texto en un archivo podemos utilizar perl:
perl -pi -e   's/cadena abuscar/cadenaporlaquesustituimos/g'

Si queremos reemplazar el texto de muchos archivos ejecutamos el comando find combinado con perl:

find /directorio -name "*.txt" | xargs perl -pi -e 's/cadena abuscar/cadenaporlaquesustituimos/g'


Podemos usar el AWK para lo mismo:

find /directorio -name "*.txt" | awk '{ gsub(/cadena abuscar/, "cadenaporlaquesustituimos"); print }'

o
 

cat archivo.txt | awk '{ gsub(/cadena abuscar/, "cadenaporlaquesustituimos"); print }'
ej: cat archivo.txt | awk '{ gsub(/Linux/, "Opensuse"); print }'

Si usamos un editor como vi, podemos usar el siguiente comando::%s/cadena abuscar/cadenaporlaquesustituimos/g

Un ejemplo práctico en vi para sustituir los caracteres ^M:
:%s/^V^M//g


Al pulsar control V y control M el resultado sera:
%s/^M//g

Que eliminara los caracteres ^M

Si queremos hacerlo usando perl utilizaremos los siguiente:
cat archivo.txt | perl -pi -e 's/\r$//'

4 comentarios:

Jose dijo...

Una entrada muy útil, como todas las tuyas. Gracias!

Edgar dijo...

Excelente, justo lo que estaba buscando, un post muy acertado, gracias

Marcos Donoso dijo...

Gracias me sirvió tu post

Bnjmn dijo...

Es exactamente lo que buscaba, muy buen post, gracias.