ansible lineinfile:如果整个文件中缺席,则在某个地方添加行

时间:2018-04-23 12:47:10

标签: ansible

我试图创建一个剧本,如果文件中完全没有该行,则会在特定位置为文件添加一行,但如果该行存在于任何地方,则根本不会添加该行。

例如,如果我要添加的行是" bar",我要添加的行是" foo"我可能有3个文件:

文件1

foo
bar
baz

file2的

foo
baz

file3的

foo
baz
bar

file2," bar"将在" foo"之后添加。但是" bar"已存在于file1file3中,因此不应添加,即使在file3中,也不会在" foo"之后立即添加。

我试过这个:

- name: Change File
  lineinfile:
    path: /path/to/file
    line: bar
    insertafter: ^foo$

问题在于这个剧本,如果我在file3毁了它,我最终会

foo
bar
baz
bar

它只检查insertafter,如果line不在该行之后,则会将其添加到那里。

我怎样才能得到我想要的东西?

1 个答案:

答案 0 :(得分:1)

我需要regexp行:

- name: Change File
  lineinfile:
    path: /path/to/file
    line: bar
    regexp: ^bar$
    insertafter: ^foo$