如何在文件的每一行开头添加一个字符串

20

我想在文件的每一行开头添加一个特定的字符串。因此,如果我有以下两行文本在someFile.txt中,并且想要添加一个日期字符串03/06/2012和竖线|

Hello|there|john
Hello|there|joel

我会-

03/06/2012|Hello|there|john
03/06/2012|Hello|there|joel

如何以最有效的方式实现这个目标?

3个回答

32
$ awk '{print "03/06/2012|" $0;}' input.txt > output.txt

在一些普通的 2010 年硬件上,处理具有 130 万行的文件大约需要 0.8 秒。


5
sed -i 's/^/03\/06\/2012|/' input.txt

4
sed命令允许您使用任何未使用的字符作为s命令的字段分隔符,而不是像/那样。这样,您就无需烦恼转义日期中的/了。例如:sed -i 's#^#03/06/2012|#' input.txt - Digital Trauma
是的,那是一个更好的解决方案。我们可以使用任何字符。谢谢! - SNathan

1

Perl解决方案:

perl -ne 'print "03/06/2012|$_"' input.txt > output.txt

只是为了好玩,在/tmp中进行了10次基准测试:

             Rate        awk perl_5.6.1        sed  perl_5.22  perl_5.20
awk        2.08/s         --       -10%       -10%       -26%       -32%
perl_5.6.1 2.32/s        11%         --        -0%       -17%       -24%
sed        2.33/s        12%         0%         --       -17%       -24%
perl_5.20  3.06/s        47%        32%        31%         9%         --

这里使用了一个1.3M行的输入文件进行测试,文件的创建方式如下:
perl -le 'while (1){exit if ++$n > 1300000; print $n}' > input.txt


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接