当前位置:  开发笔记 > 编程语言 > 正文

如何使这个Perl单线程在文件中排成一行?

如何解决《如何使这个Perl单线程在文件中排成一行?》经验,为你挑选了1个好方法。

我正在尝试编写一个单行的Perl脚本,它将配置文件中的一行从"已注释"切换为不返回.到目前为止,我有以下内容:

perl -pi -e 's/^(#?)(\tDefaultServerLayout)/ ... /e' xorg.conf

我试图找出替换(...)部分中的代码.如果没有匹配,我希望替换插入'#',如果匹配则删除它.

伪代码:

if ( $1 == '#' ) then
   print $2
else
   print "#$2"

我的Perl非常生锈,我不知道如何将它变成s///e替代品.

我之所以这样做是为了创建一个脚本,它将在两个布局之间更改(切换)我的显示设置.我希望只在一个脚本中完成此操作.

我对替代方法的建议持开放态度,但我想保留一个单线程,我可以将其包含在一个shell脚本中,该脚本在我更改布局时正在做其他我希望发生的事情.



1> ysth..:
perl -pi -e 's/^(#?)(?=\tDefaultServerLayout)/ ! $1 && "#" /e' foo

注意添加?=以通过使用先行断言来简化替换字符串.

有些人可能更喜欢s /.../ $ 1?"":"#"/ e.

推荐阅读
喜生-Da
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有