Simplemente quiero leer en un archivo de registro, hacer una búsqueda y reemplazar, y luego escribir los cambios en ese mismo archivo de registro.Perl: Pasa por un archivo y sustituye
¿Cuál es la mejor manera de hacer esto en Perl?
Simplemente quiero leer en un archivo de registro, hacer una búsqueda y reemplazar, y luego escribir los cambios en ese mismo archivo de registro.Perl: Pasa por un archivo y sustituye
¿Cuál es la mejor manera de hacer esto en Perl?
Esto se suele hacer con una sola línea:
perl -pi.bak -e "s/find/replace/g" <file>
Nota la parte -i.bak
- esto crea un archivo de copia de seguridad con la extensión .bak
. Si quieres jugar sin red se puede hacer esto para sobrescribir el archivo existente sin una copia de seguridad:
perl -pi -e "s/find/replace/g" <file>
o puede utilizar sed
(sé ... te preguntará sobre Perl):
sed -i 's/find/replace/g' <file>
La forma en que maneja sed las reglas de expresiones regulares es ... diferente, a la de Perl, por decir lo menos. – GJTorikian
Pero, ¿por qué no puedo usar backreferances? Al igual que perl -pi -e "s/foo (. *) Bar/bar $ 1foo /" tezt2 no funciona ... –
Probablemente su shell está dañando la cadena. Intenta reemplazar tus "" con "" para que el * no se expanda. –
¡Gracias que lo hizo! –