сопоставить определенное слово в квадратных скобках с помощью регулярных выражений - PullRequest
3 голосов
/ 05 июля 2019

У меня есть файл / home / ec2-user / hosts, в котором есть группа с именем [sample_word_test] в квадратных скобках, и я хочу добавить IP-адрес в эту группу, используя ANSIBLE PlayBook.Я хочу сопоставить [sample_word_test], используя выражение регулярного файла lineinfile, и добавить IP-адрес под соответствующей группой

Ниже приведен код моей книги воспроизведения

lineinfile:
    path: /home/ec2-user/hosts
    regexp: "\[.*?sample_word_test.*$\]"
    line: "{{ new_server_ip }}"
    backup: yes

Ответы [ 2 ]

1 голос
/ 05 июля 2019

Очень простое решение - использовать ini_file .Задача ниже выполняет то, что запрашивается.

- ini_file:
    path: /home/ec2-user/hosts
    section: sample_word_test
    option: "{{ new_server_ip }}"
    allow_no_value: yes
    backup: yes

Например

$ cat hosts
[all]
test1
test2

[sample_word_test]
192.168.1.99
1 голос
/ 05 июля 2019

Для точного соответствия вы должны использовать

^\[sample_word_test\]$

Вам необходимо экранировать квадратные скобки, так как они используются для определения наборов символов в синтаксисе регулярных выражений.

  • ^ - соответствует началу строки
  • \[ - экранированный символ, соответствует открывающей скобке
  • \] - экранированный символ, соответствует закрывающей скобке
  • $ - соответствует концу строки
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...