![Как заменить строку в большом файле?](https://rvso.com/image/1048330/%D0%9A%D0%B0%D0%BA%20%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D0%B8%D1%82%D1%8C%20%D1%81%D1%82%D1%80%D0%BE%D0%BA%D1%83%20%D0%B2%20%D0%B1%D0%BE%D0%BB%D1%8C%D1%88%D0%BE%D0%BC%20%D1%84%D0%B0%D0%B9%D0%BB%D0%B5%3F%20.png)
У меня есть большой файл дампа WordPress SQL на моем сервере Ubuntu, который составляет около 7 ГБ. Поскольку я меняю домен, мне нужно заменить доменное имя в файле. Я хочу узнать, как это сделать через командную строку.
dev.example.com
Необходимо заменить на
example.com
решение1
вы можете использовать sed с редактированием на месте
sed -i -e 's/dev\.example\.com/example\.com/g' filename
решение2
Я не знаю, насколько строг ваш sed
тег, но универсальный способ замены строки(строк) в файле с помощью команды:
<script> <file> <old_string> <new_string>
Вы можете использовать небольшой скрипт Python, представленный ниже:
#!/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))
Скопируйте скрипт в пустой файл, сохраните его как replace.py
исполняемый (чтобы запустить его без python3
префикса), запустите его командой:
/path/to/replace.py /path/to/file dev.example.com example.com
Если old_string или new_string содержат пробелы, используйте кавычки:
/path/to/replace.py /path/to/file 'old string with spaces' 'new string with spaces'