Regex Perl多行搜索替换
我想使用perl one liner查找和相应的块并取消注释文本文件中的第二行。我对使用复杂的正则表达式相当陌生,因此非常感谢您的帮助!还有一种方法可以调试一行程序吗 以下是我到目前为止所拥有的,即使我使用交互式regex测试仪进行了测试,但仍然不起作用:Regex Perl多行搜索替换,regex,perl,Regex,Perl,我想使用perl one liner查找和相应的块并取消注释文本文件中的第二行。我对使用复杂的正则表达式相当陌生,因此非常感谢您的帮助!还有一种方法可以调试一行程序吗 以下是我到目前为止所拥有的,即使我使用交互式regex测试仪进行了测试,但仍然不起作用: perl -p -i.bak -e 's/#[\s]*label2[\n]#(.*)/${1}/gi;' file.txt 文本文件如下所示 # label1 #variable=foobar1 # label2 #variabl
perl -p -i.bak -e 's/#[\s]*label2[\n]#(.*)/${1}/gi;' file.txt
文本文件如下所示
# label1
#variable=foobar1
# label2
#variable=foobar2
一种选择:
perl -0777 -pe 's/(#\s*label2\s*\n)#/$1/s' infile
-0777
将整个文件拖入,parens在关键行上进行分组,以便在替换零件中再次使用它,并删除其外部的字符#
。它产生:
# label1
#variable=foobar1
# label2
variable=foobar2
关于调试,我认为它的工作原理与在脚本中使用
-d
开关来激活它的工作原理相同。只需将每条指令放在不同的行中,即可将其可视化。一个awk解决方案(如果您不限于perl):
awk 'f{f=sub(/^#/,"")};/label2/{f=1}1' file.txt
/s
修饰符更改了
的行为方式,但在regex.BTW中没有
,我从中获得了一些关于-0777标志的文档/信息?@user1940015 Run(我已链接到在线版本,以防您的机器上没有perldoc
。@ThisSuitesBlack不谢谢!谢谢,但我的案例仅限于使用perl