Как заменить строку в большом файле? [дубликат]

На этот вопрос уже есть ответ здесь:

У меня есть большой файл дампа SQL WordPress на моем сервере Ubuntu, который является около 7 ГБ. Поскольку я меняю домен, мне нужно заменить доменное имя в файле. Я хочу знать, как это сделать через командную строку.

dev.example.com

Необходимо заменить на

example.com
2
задан 4 November 2014 в 00:00

2 ответа

можно использовать sed с оперативным редактированием

sed -i -e 's/dev\.example\.com/example\.com/g' filename
7
ответ дан 6 October 2019 в 21:33

Я не знаю как строгий Ваш 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'
1
ответ дан 6 October 2019 в 21:33

Другие вопросы по тегам:

Похожие вопросы: