Ansible regrex вставка или соответствующий вопрос - PullRequest
0 голосов
/ 17 декабря 2018

У меня вопрос о том, как лучше сопоставить строки для каждой строки.У меня есть файл со следующими строками:

set interfaces vlan unit 1040 description line-v0 1040 1077 1413 2239 2412 2413 2414 413 743-1g28
set interfaces vlan unit 1077 description line-v0 1040 1077 1413 2239 2412 2413 2414 413 743-1g28

Я пытаюсь использовать модуль замены Ansible, чтобы сделать следующее:

set interfaces vlan unit 1040 description line-v1040-1g28
set interfaces vlan unit 1077 description line-v1077-1g28

Я не смог понятькак сопоставить этот шаблон и удалить лишний текст.Любая помощь будет отличной!

Ответы [ 2 ]

0 голосов
/ 21 декабря 2018

Интересно, мне придется проверить ваше решение.Мне удалось найти свой ответ на другом форуме, используя группы захвата и ссылаясь на него после того, как он совпадет / заменится.\ g - это то, как вы называете группу захвата в Ansible, о которой я не знал.

- name: Find and replace 3000
  replace:
    path: "~/ansible-depo/config/{{ ansible_host }}_set_vlan_desc.set"
    regexp: '(?<=(?P<vlanid_match>(\s[3][0-9][0-9][0-9])))\s?'
    replace: ' description "uplink-v\g<vlanid_match>-{{ ansible_host }}"'
  ignore_errors: yes
0 голосов
/ 18 декабря 2018

Учитывая, что строки хранятся в replace-01.txt.Это код, который вы ищете?

- replace:
    path: replace-01.txt
    regexp: "{{ item.regexp }}"
    replace: "{{ item.replace }}"
  with_items:
    - { regexp: "unit 1040.*$", replace: "unit 1040 description line-v1040-1g28" }
    - { regexp: "unit 1077.*$", replace: "unit 1077 description line-v1077-1g28" }
- debug: msg="{{ item }}"
  with_lines: "cat replace-01.txt"


> ansible-playbook replace-01.yml | grep msg
    "msg": "set interfaces vlan unit 1040 description line-v1040-1g28"
    "msg": "set interfaces vlan unit 1077 description line-v1077-1g28"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...