¿Cómo reemplazo una cadena en un archivo grande?

¿Cómo reemplazo una cadena en un archivo grande?

Tengo un gran archivo de volcado SQL de WordPress en mi servidor Ubuntu, que pesa alrededor de 7 GB. Como estoy cambiando de dominio, necesito reemplazar el nombre de dominio en el archivo. Quiero saber cómo hacerlo a través de la línea de comando.

dev.example.com

Necesita reemplazar con

example.com

Respuesta1

puedes usar sed con edición in situ

sed -i -e 's/dev\.example\.com/example\.com/g' filename

Respuesta2

No sé qué tan estricta sedes su etiqueta, pero existe una forma universal de reemplazar cadenas en un archivo mediante el comando:

<script> <file> <old_string> <new_string>

podrías usar el pequeño script de Python a continuación:

#!/usr/bin/env python3

import sys
file = sys.argv[1]; old_string = sys.argv[2]; new_string = sys.argv[3]
with open(file) as src:
    lines = src.read()
print(lines.replace(old_string, new_string))

Copie el script en un archivo vacío, guárdelo como replace.pyejecutable (para ejecutarlo sin python3prefijo), ejecútelo con el comando:

/path/to/replace.py /path/to/file dev.example.com example.com

En caso de que cadena_antigua o cadena_nueva tengan espacios, utilice comillas:

/path/to/replace.py /path/to/file 'old string with spaces' 'new string with spaces'

información relacionada