我今天早上刚刚开始学习Perl,我的主要目标是替换文本行。假设我有以下文本文件;
manufacturer=BMW
manufacturer=Honda
manufacturer=Mercedes
manufacturer=Toyota
manufacturer=Noble
manufacturer=Maserati
manufacturer=Jaguar
manufacturer=Ford
我想替换所有行,以便文本文件看起来像这样;
manufacturer=XXX
manufacturer=XXX
manufacturer=XXX
manufacturer=XXX
manufacturer=XXX
manufacturer=XXX
manufacturer=XXX
manufacturer=XXX
我已经学会了如何用我想要的文本替换与特定情况相匹配的文本行,如下所示;
s/BMW/XXX/ig
但考虑到在这个文件中我有不同的情况,我不想每次都与不同的制造商(本田,梅赛德斯,丰田)一起更新perl代码,然后重新运行代码。当然,必须有一种方法可以简单地搜索以(不用担心制造商)为标志的行
manufacturer=*whatever*
然后用
替换整行manufacturer=XXX
有人可以说明如何去做这件事吗?
答案 0 :(得分:4)
我写这个的方式是
s/^manufacturer=\K.+/XXX/
开头的^
确保manufacturer=
从字符串的开头开始,而不是只在任何地方出现。
\K
(对于 Keep )元字符意味着忽略替换中的所有前面的内容,因此模式匹配 ^manufacturer=.+
但是仅替换.+
。
最后,.+
匹配字符串末尾的所有内容或尾随换行符(.
与换行符不匹配)。
答案 1 :(得分:1)
您需要充分利用正则表达式的全部功能:
s/^manufacturer=\w+/manufacturer=XXX/ig
答案 2 :(得分:0)