Perl 在脚本中取消注释行

Perl 在脚本中取消注释行,perl,Perl,我想使用bash脚本取消对一行的注释。通常我使用perl命令替换文本,但在这种情况下,这不起作用: perl -pi -e "s[# %wheel ALL=(ALL) NOPASSWD: ALL][%wheel ALL=(ALL) NOPASSWD: ALL]g" /mnt/etc/sudoers 提前感谢。(和)是regex元字符,它们有特殊的含义 /#%wheel ALL=(ALL)NOPASSWD:ALL/将不匹配#%wheel ALL=(ALL)NOPASSWD:ALL。它将匹配#%w

我想使用bash脚本取消对一行的注释。通常我使用perl命令替换文本,但在这种情况下,这不起作用:

perl -pi -e "s[# %wheel ALL=(ALL) NOPASSWD: ALL][%wheel ALL=(ALL) NOPASSWD: ALL]g" /mnt/etc/sudoers
提前感谢。

是regex元字符,它们有特殊的含义

/#%wheel ALL=(ALL)NOPASSWD:ALL/
将不匹配
#%wheel ALL=(ALL)NOPASSWD:ALL
。它将匹配
#%wheel ALL=ALL NOPASSWD:ALL
(注意缺少参数)并在
$1
中捕获
ALL

您可以使用
\
转义任何特殊的元字符,如
/\35;%wheel ALL=\(ALL\)NOPASSWD:ALL/
,也可以声明所有内容都是在
\Q
\E
之间进行的<代码>/\Q#%wheel ALL=(ALL)NOPASSWD:ALL\E/

“它不工作”不是对问题的良好描述。