У меня есть файл input.txt, содержащий следующий текст:
abc def
ghi jkl
mno pqr
stu vwx
Я могу заменить две строки в файле этой командой:
perl -i -p0e 's/ghi jkl\nmno pqr/zyx wvu\ntsr qpo/s' input.txt
Однако янужно, чтобы строки поиска и замены были в переменных:
search_s="ghi jkl\nmno pqr"
replace_s="zyx wvu\ntsr qpo"
Но теперь эта команда не работает с переменными:
perl -i -p0e 's/'$search_s'/'$replace_s'/s' input.txt
Я получаю сообщение об ошибке "Шаблон подстановки незаканчивается в -е строке 1. ".Кажется, проблема в пробелах в переменной $ search_s.Я пробовал различные методы кодирования пространства, чтобы эта работа работала без успеха.
Примечание: я использую команду perl, потому что она хорошо обрабатывает поиск и замену, содержащую \n
в файле.Я пробовал sed
, но не очень хорошо.
Может кто-нибудь помочь мне закодировать пространство, чтобы оно работало в переменной или другой команде, которая будет выполнять поиск и замену файла при сохранении \n
?
Спасибо, Роб