Здраствуйте.
Подскажите можно ли с помощью Ansible модуля lineinfile, заменить первое совпадение после заданной строки и как?
Есть например такой файл
[abc]
enabled=0
[abc-1]
enabled=0
[abc-2]
enabled=0
[abc-test]
enabled=0
[abc-debuginfo]
enabled=0
Нужно заменить Enabled=0 на Enabled=1 только после [abc] и [abc-2],
пробовал так
- lineinfile: dest=/path/to/file regexp="^Enabled=" insertafter="^\[abc\]" line="Enabled=1"
- lineinfile: dest=/path/to/file regexp="^Enabled=" insertafter="^\[abc-2\]" line="Enabled=1"
но замена идет только последнего Enabled, я так понимаю что insertafter/insertbefore обрабатывается если regexp не нашел совпадений.
UPD Пока решил задачу так
- command: "sed -i '/^\[abc\]/,/\[.*\]/ { s/^enabled=.*/enabled=1/g }; /^\[abc-2\]]/,/\[.*\]/ { s/^enabled=.*/enabled=1/g }' /path/to/file"
Возможно есть более правильное/красивое решение, я его пока не нашел.