【发布时间】:2014-02-20 08:10:51
【问题描述】:
我今天早上刚开始学习 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
有人可以说明如何去做吗?
【问题讨论】:
-
如果您想更改所有行,您只需在文件中的每一行打印一次
manufacturer=XXX。 IE。perl -lne'print "manufacturer=XXX"' input > output -
感谢 TLP。这会用“manufacturer=XXX”覆盖现有文件中的每一行吗?
-
它会将文件中的每一行写入一行到一个新文件中。我不建议为新手覆盖,但您可以使用
-i标志这样做。请记住,变化是不可逆转的。