Проблема с регулярным выражением в оболочке ansible модуля - PullRequest
0 голосов
/ 17 октября 2019

В моей программе ansible-playbook задача реализовать задачу заменить в тексте файла символы. Я использую ANSIBLE модуль оболочки с SED.

Я хочу реализовать проблему

txt.file: Some text @@VAR_NUMBER_ONE@@

новый txt.file: Some text {{VAR_NUMBER_ONE}}

  - name: sed
      shell: sed -i 's|@@\([a-zA-Z_ ]*\)@@|\{{\1}}|g' txt.file

У меня фатальная ошибка

фатально: [localhost]: FAILED! => {"msg": "Произошло необработанное исключение при шаблонировании 's | @@ \ ([a-zA-Z_] * \) @@ | \ {{\ 1}} | g'. Ошибка была, оригиналсообщение: неожиданный символ u '\\' в 25 "}

1 Ответ

0 голосов
/ 17 октября 2019

Q: "заменить в тексте файла символами"

txt.file перед: Some text @@VAR_NUMBER_ONE@@

txt.file после: Some text {{VAR_NUMBER_ONE}}

A: Задание, приведенное ниже, выполняет свою работу.

- replace:
    path: "txt.file"
    regexp: '^(.*)@@(.*)@@$'
    replace: '{{ "\1" + "{{" + "\2" + "}}" }}'

Объясненная строка regexp :

  • ^ начало строки
  • (.*) любая последовательность в \1
  • @@ соответствует @@
  • (.*) любая последовательность, хранящаяся в \2
  • @@ соответствует @@
  • $ конец строки

replace строка создается путем объединения 4 строк, потому что в YAML {{ и }} используются для расширения переменных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...