Módulo Ansible 'sin formato': uso de caracteres de escape en expresiones regulares para realizar el comando 'sed'

Módulo Ansible 'sin formato': uso de caracteres de escape en expresiones regulares para realizar el comando 'sed'

Quiero usar el módulo sin formato para ejecutar un comando 'sed' que contendrá 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"

Esto, sin embargo, se queja con:

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

Con el '^' apuntando al primer '\' de la cadena. ¿Cómo puedo incluir caracteres de escape en este comando sin que Ansible intente procesarlos?

Respuesta1

La siguiente tarea funciona

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

con variables

file: test
prefix: AAA
addition: XXX

da

$ cat test
alsdjflaskdjfasn AAA fasdfasdfsadf

$ cat test.test 
alsdjflaskdjfasn AAA XXX

Expresión regular modificada de "^" a "$"

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

da

$ cat test.test2
alsdjflaskdjfasn  XXX

Notas

información relacionada