
원시 모듈을 사용하여 이스케이프 문자가 포함된 '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
노트
- 사용7.3.2. 작은따옴표 스타일
- 와 함께sed --regexp-확장괄호를 이스케이프할 필요는 없습니다.