2016-11-25 2 views
0

У меня есть файл, который содержит две строки:анзибль lineinfile комментируются и не прокомментировал линию

#Level menu 
Level menu 

Я хочу, чтобы проверить линию Level имеет только menu. Если кроме этого замените строку таким образом, я использовал следующие параметры для lineinfile задачи:

dest=/var/apache/test.conf 
regexp="^\s*#*?\s*Level" 
line="Level menu" 

Когда я побежал пьесы я получил две строки в файле:

Level menu 
Level menu 

Так дубликат линия имеет появился.

case1:

#Level menu 

Вариант 2:

#Level menu 
Level menu 

Вопрос 3:

Level submenu 

Во всех случаях должны прийти answe r Level menu.

Я хочу проверить сначала без строки комментариев, если нет, то проверьте с помощью строки комментариев или есть ли какое-либо другое решение?

+0

Вы ** не можете ** объединить две строки в одну с модулем 'lineinfile'. – techraf

+0

Нет во втором случае проблема, потому что, если я использую regex '# * Level' в первом случае, а третий случай будет работать, а второй случайный вывод содержит две повторяющиеся строки, потому что lineinfile видит только первую строку, не рассматривая вторую строку. – SSN

ответ

1

Если я читаю ваши требования правильно, вы ищете что-то же просто, как:

- lineinfile: 
    dest: /var/apache/test.conf 
    regexp: ^Level 
    line: Level menu 

- lineinfile: 
    dest: /var/apache/test.conf 
    regexp: ^#Level 
    state: absent 

Пример 1:

  • До:

    #Level menu 
    Level menu 
    
  • После:

    Level menu 
    

Пример 2:

  • Перед:

    #Level menu 
    Level menu and something else 
    
  • После того, как:

    Level menu 
    
+0

Я отредактировал и добавил 3 случая, пожалуйста, проверьте, что – SSN

Смежные вопросы