Я хочу использовать необработанный модуль для запуска команды sed, которая будет содержать escape-символы.
- name: Search for prefix in file and replace all following text with addition
raw: "sed 's/\({{ prefix }}\)\(.*\)/\1 {{ addition }}/g' {{ file }} > {{ file }}.test"
Однако это жалуется на:
ERROR! Syntax Error while loading YAML.
found unknown escape character
С '^', указывающим на первый '\' в строке. Как включить escape-символы в эту команду, не пытаясь обработать их?
Задача ниже работает
- raw: 'sed --regexp-extended ''s/({{ prefix }})(.*)/\1 {{ addition }}/g'' {{ file }} > {{ file }}.test'
с переменными
file: test
prefix: AAA
addition: XXX
дает
$ cat test
alsdjflaskdjfasn AAA fasdfasdfsadf
$ cat test.test
alsdjflaskdjfasn AAA XXX
Изменено регулярное выражение с «^» до «$»
- raw: 'sed --regexp-extended ''s/^(.*)({{ prefix }})(.*)$/\1 {{ addition }}/g'' {{ file }} > {{ file }}.test2'
дает
$ cat test.test2
alsdjflaskdjfasn XXX
Ноты