Perl 在脚本中取消注释行
我想使用bash脚本取消对一行的注释。通常我使用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
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/“它不工作”不是对问题的良好描述。