Módulo Ansible 'raw' - usando caracteres de escape em regex para executar o comando 'sed'

Módulo Ansible 'raw' - usando caracteres de escape em regex para executar o comando 'sed'

Quero usar o módulo bruto para executar um comando 'sed' que conterá caracteres de escape.

- name: Search for prefix in file and replace all following text with addition
  raw: "sed 's/\({{ prefix }}\)\(.*\)/\1 {{ addition }}/g' {{ file }} > {{ file }}.test"

Este, no entanto, reclama com:

ERROR! Syntax Error while loading YAML.
found unknown escape character

Com o '^' apontando para o primeiro '\' da string. Como incluir caracteres de escape neste comando sem tentar processá-los?

Responder1

A tarefa abaixo funciona

- raw: 'sed --regexp-extended ''s/({{ prefix }})(.*)/\1 {{ addition }}/g'' {{ file }} > {{ file }}.test'

com variáveis

file: test
prefix: AAA
addition: XXX

$ cat test
alsdjflaskdjfasn AAA fasdfasdfsadf

$ cat test.test 
alsdjflaskdjfasn AAA XXX

Regex modificado de "^" até "$"

- raw: 'sed --regexp-extended ''s/^(.*)({{ prefix }})(.*)$/\1 {{ addition }}/g'' {{ file }} > {{ file }}.test2'

$ cat test.test2
alsdjflaskdjfasn  XXX

Notas

informação relacionada