Como substituo uma string em um arquivo grande?

Como substituo uma string em um arquivo grande?

Estou tendo um grande arquivo de despejo SQL do WordPress no meu servidor Ubuntu, que tem cerca de 7 GB. Como estou alterando o domínio, preciso substituir o nome do domínio no arquivo. Quero saber como fazer isso via linha de comando.

dev.example.com

Precisa substituir por

example.com

Responder1

você pode usar sed com edição local

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

Responder2

Não sei o quão rigorosa sedé sua tag, mas é uma maneira universal de substituir string(s) em um arquivo pelo comando:

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

você poderia usar o pequeno script python abaixo:

#!/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 o script em um arquivo vazio, salve-o como replace.pyexecutável (para executá-lo sem python3prefixo), execute-o pelo comando:

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

Caso old_string ou new_string contenham espaços, use aspas:

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

informação relacionada