7

我正在使用 lineinfile 如下:

lineinfile dest=./hosts_exp insertafter='\[hosts1\]' line="xxxxxxxxx" state=present

hosts_exp的如下:

[local]
localhost

[hosts1]

[hosts2]

[hosts3]

lineinfile 在 [hosts3] 之后插入文本,而不是在 [hosts1] 之后插入文本。

4

4 回答 4

6

利用:

lineinfile:
  dest: "./hosts_exp"
  line: "xxxxxxxxx"
  insertafter: '^\[hosts1\]'
  state: present
于 2016-10-11T14:50:55.563 回答
4

它似乎是多余的,但您也需要指定正则表达式:

lineinfile:
  dest: ./hosts_exp
  insertafter: '\[hosts1\]'
  regexp: '\[hosts1\]'
  line: "xxxxxxxxx"
  state=present

为什么?regexp上面写着“寻找这条线” 。上面写着“insertafter在此处注入线路”。

我对此进行了测试;这是提交。从上面的行中我的提交有一些小的变化,根据需要使用。

于 2014-06-11T22:56:10.410 回答
2

例子:

- name: "blah"
  lineinfile:
    dest: "/test.sh"
    insertafter: 'test text'
    line: "text add"
    state: present
于 2016-10-06T21:25:58.287 回答
0

使用反向引用:是

lineinfile:
  backrefs: yes
  dest: ./hosts_exp
  insertafter: '\[hosts1\]'
  regexp: '\[hosts1\]'
  line: "xxxxxxxxx"
  state=present

这个标志稍微改变了模块的操作;insertbefore 和 insertafter 将被忽略,如果正则表达式与文件中的任何位置都不匹配,则文件将保持不变。如果正则表达式匹配,最后匹配的行将被扩展行参数替换。

于 2018-12-13T08:28:16.337 回答