У меня большой текстовый файл (около 2 ГБ). Я хочу выполнить пять операций поиска и замены одного и того же файла и хотел бы сделать это одной командой. Обычно я использую vim, открываю файл, выполняю одно действие замены, затем следующее и т. Д. Есть одна ловушка, поскольку я заметил, что после трех или четырех поисков vim падает из-за проблем с памятью.
Вот два примера команды, которую я использую в Vim:
:%s/www\.abcdef/www.test.abcdef/g
:%s/www\.klmnop/www.test.klmnop/g
Каков наилучший способ справиться с этим?
linux
vim
sed
find-and-replace
SPRBRN
источник
источник
sed
. Я пытался, и это работает. В Unix & Linux Stackexchange есть хорошая нить , и в принятом ответе не упоминаются точки в качестве символов для выхода.Если у вас есть еще много шаблонов поиска, вы можете сохранить их в файле и прочитать оттуда замены. Например, скажем, что это содержимое
replacements.txt
:Затем вы можете прочитать список N замен и заменить их следующим:
НОТЫ:
replacements.txt
.sed
на замену, что может занять некоторое время, если у вас много операций замены.Другим вариантом будет написать выше в виде
sed
сценария:Затем вы можете запустить скрипт для вашего файла, и он сделает все замены за один раз:
источник