Como eu substituo uma string em um arquivo grande? [duplicado]

2

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

dev.example.com

Precisa ser substituído por

example.com
    
por Achintha Samindika 03.11.2014 / 17:53

2 respostas

6

você pode usar sed com edição no local

sed -i -e 's/dev\.example\.com/example\.com/g' filename
    
por Abey 03.11.2014 / 18:27
1

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

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

você pode usar o minúsculo 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.py para torná-lo executável (para executá-lo sem python3 prefix), execute-o pelo comando:

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

No caso de old_string ou new_string ter espaços, use aspas:

/path/to/replace.py /path/to/file 'old string with spaces' 'new string with spaces'
    
por Jacob Vlijm 03.11.2014 / 18:35