![Wie ersetze ich eine Zeichenfolge in einer großen Datei?](https://rvso.com/image/1048330/Wie%20ersetze%20ich%20eine%20Zeichenfolge%20in%20einer%20gro%C3%9Fen%20Datei%3F%20.png)
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 sed
Tag 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.py
ausfü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'