Ansible lineinfile/regexp/line:为什么要在文件末尾添加行?

Ansible lineinfile/regexp/line:为什么要在文件末尾添加行?,ansible,ansible-2.x,Ansible,Ansible 2.x,我不明白lineinfle是如何工作的,我使用: -名称:配置 线条填充: 路径:/etc/apt/apt.conf.d/50s-upgrades regexp:'^\/\/\${distro\u id}:\${distro\u codename}-更新;' 行:'${distro_id}:${distro_codename}-更新;' 国家:现在 我希望文件中的这一行不会被注释: // "${distro_id}:${distro_codename}-updates"; 与此相反,

我不明白lineinfle是如何工作的,我使用:

-名称:配置 线条填充: 路径:/etc/apt/apt.conf.d/50s-upgrades regexp:'^\/\/\${distro\u id}:\${distro\u codename}-更新;' 行:'${distro_id}:${distro_codename}-更新;' 国家:现在 我希望文件中的这一行不会被注释:

//      "${distro_id}:${distro_codename}-updates";
与此相反,此行保持原样,但在文件末尾, 我明白了:


所以匹配发生了,但为什么在文件末尾有新行而不是替换?

肯定还有其他问题。该代码的工作方式与expexted相同

shell> diff 50unattended-upgrades 50unattended-upgrades.orig 
1c1
<       "${distro_id}:${distro_codename}-updates";
---
> //      "${distro_id}:${distro_codename}-updates";

肯定还有其他问题。该代码的工作方式与expexted相同

shell> diff 50unattended-upgrades 50unattended-upgrades.orig 
1c1
<       "${distro_id}:${distro_codename}-updates";
---
> //      "${distro_id}:${distro_codename}-updates";

您的regexp不会转义所有特殊符号,因此不存在导致添加新行而不是替换的匹配项。据英国《每日邮报》报道,卷曲的大括号应该去掉

这个任务在我的Ubuntu 18.04服务器上按预期工作

- name: "configure"
  lineinfile:
    path: /etc/apt/apt.conf.d/50unattended-upgrades
    regexp: '^//\s+"\$\{distro_id\}:\$\{distro_codename\}-updates";'
    line: '       "${distro_id}:${distro_codename}-updates";'
    state: present
差异


您的regexp不会转义所有特殊符号,因此不存在导致添加新行而不是替换的匹配项。据英国《每日邮报》报道,卷曲的大括号应该去掉

这个任务在我的Ubuntu 18.04服务器上按预期工作

- name: "configure"
  lineinfile:
    path: /etc/apt/apt.conf.d/50unattended-upgrades
    regexp: '^//\s+"\$\{distro_id\}:\$\{distro_codename\}-updates";'
    line: '       "${distro_id}:${distro_codename}-updates";'
    state: present
差异