Ansible은 파일에서 첫 번째 항목을 대체합니다.

Ansible은 파일에서 첫 번째 항목을 대체합니다.

저는 Ansibles replace모듈을 사용하고 있으며 파일에서 첫 번째 항목만 바꾸고 싶습니다.

샘플 문자열이 있습니다.

example.string.in.my.text=test.@@sometext@@

나는 희망:

example.string.in.my.text=test.$$sometext@@

My Ansible은 replace게임에 이 모듈을 사용합니다.

- name: tasks replace
  replace:
     regexp: '(@@+?)'
     replace: '$$'

이 임무는 내 모든 것을 바꿔 놓았습니다@@

example.string.in.my.text=test.$$sometext$$

첫 번째 발생만 변경하도록 하려면 어떻게 해야 합니까 @@?

답변1

GMaster의 답변은 각 줄의 마지막 항목과 일치합니다. 다음 버전은 비탐욕적 일치를 사용하여 줄에서 첫 번째 일치 항목을 찾고 탐욕적 일치를 사용하여 다음 줄과 일치하는 것을 피하기 위해 파일의 나머지 부분을 찾습니다.

- name: tasks replace
  replace:
    regexp: '^(.*?\.)@@([.\n]*)$'
    replace: '\1$$\2'

최신 커뮤니티 버전을 기반으로 답변https://docs.ansible.com/ansible/latest/collections/ansible/builtin/replace_module.html

답변2

- name: tasks replace
  replace:
    regexp: '^(.*\.)@@(.*)$'
    replace: '\1$$\2'

관련 정보