【发布时间】:2010-12-06 09:23:33
【问题描述】:
在一个文件中,比如说 xyz.txt,我想替换任何数字的模式,后跟一个点示例:1.,2.,10.,11。等..带有空格。 如何在命令行上编写一个perl命令作用于文件进行上述操作,应该使用什么正则表达式?
请帮忙 谢谢。
【问题讨论】:
在一个文件中,比如说 xyz.txt,我想替换任何数字的模式,后跟一个点示例:1.,2.,10.,11。等..带有空格。 如何在命令行上编写一个perl命令作用于文件进行上述操作,应该使用什么正则表达式?
请帮忙 谢谢。
【问题讨论】:
这必须是 Perl oneliner?
perl -i -pe 's/\d+\./ /g' <fileName>
Perl 命令行选项:-i 用于指定输入文件会发生什么。如果你不给它一个文件扩展名,原始文件就会丢失,并被 Perl munged 输出替换。例如,如果我有这个:
perl -i.bak -pe 's/\d+\./ /g' <fileName>
原始文件将以.bak 后缀存储,
-p 表示将您的 Perl 程序包含在一个看起来 SOMEWHAT 如下所示的打印循环中:
while ($_ = <>) {
<Your Perl one liner>
print "$_";
}
这是一个稍微简化的解释是怎么回事。您可以通过从命令行执行 perldoc perlrun 来查看实际的 perl 循环。主要思想是它允许您像sed 或awk 一样对文件的每一行进行操作。
-e 只包含您的 Perl 命令。
你也可以做文件重定向:
perl -pe 's/\d+\./ /g' < xyz.txt > xyz.txt.out
【讨论】:
sed了。 perl -pe 是它。
答案(未测试):
perl -ipe "s/\d+\./ /g" xyz.txt
【讨论】:
perl -pie,因为这样会拼出一个单词,但没关系。
两者
perl -ipe "s/\d+\./ /g" xyz.txt
和
perl -pie
无法在我的系统上执行。
我使用以下顺序:
perl -i -pe
【讨论】: