我需要匹配字符串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'
答案 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
您正在尝试修改regexp: '^NAME ALL=\(ALL\)\s*NOPASSWD: ALL$'
- 请花一些时间阅读Is it safe to edit /etc/sudoers with the Ansible "lineinfile" module?,尤其是this answer。