Поиск буквенных строк с регулярным выражением, когда строка поиска содержит специальные символы, иногда не так прост, как поиск шаблонов, но вы можете сделать это с небольшим количеством жонглирования.
Примечание: команда echo
должна обслуживать специальные символы CMD, поэтому ей нужно ^^
для экранирования одиночных ^
и ^|
убежать |
... Вам не нужен escape-символ CMD ^
если вы печатаете прямо в файл.
Шаг 1: Создайте файл с именем literal-srch-strings.txt, который содержит точную (неизмененную) строку для замены. Есть 2 способа создать этот файл:
Как команда, введенная в командной строке CMD, или как команда из командного сценария.cmd/.bat.
echo sed -i^^/\\*$/$[{" ;"> literal-srch-strings.txt
Сделайте literal-srch-strings.txt самостоятельно, в своем текстовом редакторе.
В этом случае вам не следует использовать CMD-escape-символ ^
, поэтому строка имеет только один ^
, а не ^^
- это потому, что вы обходите оболочку CMD.
Вот что нужно в файле .txt (так же, как указано в имени файла :)
sed -i^/\\*$/$[{" ;"
Шаг 2: Создайте скрипт sed с именем str-to-regex.sed для преобразования строки (строк) в sed regex (s).
Обратите внимание, что та же проблема CMD-escape-символа ^
применима к этому шагу, поэтому, опять же, есть два способа создать файл .sed:
Как команда:
echo s/[]\/$*.^^^|[]/\\^&/g; s/.*/s\/^&\/Ciao!\/g/> str-to-regex.sed
Используя ваш текстовый редактор, создайте файл с именем str-to-regex.sed, содержащий:
s/[]\/$*.^|[]/\\&/g; s/.*/s\/&\/Ciao!\/g/
Шаг 3: Запустите sed-скрипт, который преобразует строку в регулярное выражение sed, и
отправьте свой вывод другому sed-скрипту replace-text.sed, который будет выполнять фактическую замену.
sed -f str-to-regex.sed literal-srch-strings.txt > replace-text.sed
Шаг 4: Запустите replace-text.sed - для теста мы можем использовать literal-srch-strings.txt в качестве входного файла, но вы, конечно, можете использовать любой входной файл.
sed -f replace-text.sed literal-srch-strings.txt
Вот вывод:
Ciao!