Ansible regexp匹配括号

时间:2018-01-19 12:48:49

标签: regex ansible

我需要匹配字符串NAME ALL=(ALL) NOPASSWD: ALL 但是我被括号括起来了。

我使用网站来帮助我构建表达式,但我无法弄明白。 因此我得到了: \sNAME\sALL=\(ALL\)\s\s\s\s\s\s\sNOPASSWD:\sALL 然而,这并没有得到括号标志...... 我也使用了大量的\s,我确定有更好的方法吗?

我使用Ansible Lineinfile模块删除该行。 感谢所有帮助,谢谢!

编辑:以防万一,我的小剧本补充说,可能是我在那里做错了什么:

您好。

是的,它在所有这些发生器中都匹配,但无论出于何种原因,我都无法在我的剧本中使用它,我是个白痴还是?

- hosts: all
  become: true
  tasks:
  - name: Remove user
    lineinfile:
      dest: /etc/sudoers
      regexp: '^.*NAME.*$'
      state: 'absent'

1 个答案:

答案 0 :(得分:3)

  • 您需要使用CREATE EXTERNAL TABLE ingest_parquet_files LIKE PARQUET '/path/to/my/files/*.parquet' STORED AS PARQUET LOCATION '/tmp'; ;
  • 转义()
  • 字符串中的空格与正则表达式中的空格匹配;
  • 您可以在\^(或只是其中一个)之间编写表达式,以确保它只匹配确切的行(例如,不是注释掉的行)。

要匹配问题中的确切行:

$

您还可以使用带有乘数的regexp: '^NAME ALL=\(ALL\) NOPASSWD: ALL$' 来匹配随机长度的空格,例如在\s字符串之前:

NOPASSWD

BUT

您正在尝试修改regexp: '^NAME ALL=\(ALL\)\s*NOPASSWD: ALL$' - 请花一些时间阅读Is it safe to edit /etc/sudoers with the Ansible "lineinfile" module?,尤其是this answer