Ansible 'raw' 모듈 - 정규식에서 이스케이프 문자를 사용하여 'sed' 명령 수행

Ansible 'raw' 모듈 - 정규식에서 이스케이프 문자를 사용하여 'sed' 명령 수행

원시 모듈을 사용하여 이스케이프 문자가 포함된 'sed' 명령을 실행하고 싶습니다.

- 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

'^'는 문자열의 첫 번째 '\'를 가리킵니다. 처리를 시도하지 않고 이 명령에 이스케이프 문자를 포함하려면 어떻게 해야 합니까?

답변1

아래 작업이 작동합니다.

- 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

노트

관련 정보