
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
- Usar7.3.2. Estilo de comillas simples
- Consed --regexp-extendidoNo es necesario escapar de los paréntesis.