Wie ersetze ich eine Zeichenfolge in einer großen Datei?

Wie ersetze ich eine Zeichenfolge in einer großen Datei?

Ich habe eine große WordPress SQL-Dump-Datei auf meinem Ubuntu-Server, die etwa 7 GB groß ist. Da ich die Domäne ändere, muss ich den Domänennamen in der Datei ersetzen. Ich möchte wissen, wie das über die Befehlszeile geht.

dev.example.com

Muss ersetzt werden durch

example.com

Antwort1

Sie können sed mit Inplace-Bearbeitung verwenden

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

Antwort2

Ich weiß nicht, wie streng Ihr sedTag ist, aber eine universelle Möglichkeit zum Ersetzen von Zeichenfolgen in einer Datei besteht in dem folgenden Befehl:

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

Sie können das folgende kleine Python-Skript verwenden:

#!/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))

Kopieren Sie das Skript in eine leere Datei, speichern Sie es als replace.pyausführbare Datei (um es ohne Präfix auszuführen python3) und führen Sie es mit dem folgenden Befehl aus:

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

Falls entweder „old_string“ oder „new_string“ Leerzeichen enthält, verwenden Sie Anführungszeichen:

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

verwandte Informationen