我想在文件中每行的开头添加一个特定的字符串。所以,如果我有someFile.txt以下两行要添加一个日期字符串03/06/2012与铺管如何在文件中每行的开头添加一个字符串
Hello|there|john
Hello|there|joel
我有─
03/06/2012|Hello|there|john
03/06/2012|Hello|there|joel
如何做到这一点?
注意我在文件中有130万行。
我想在文件中每行的开头添加一个特定的字符串。所以,如果我有someFile.txt以下两行要添加一个日期字符串03/06/2012与铺管如何在文件中每行的开头添加一个字符串
Hello|there|john
Hello|there|joel
我有─
03/06/2012|Hello|there|john
03/06/2012|Hello|there|joel
如何做到这一点?
注意我在文件中有130万行。
$ awk '{print "03/06/2012|" $0;}' input.txt > output.txt
对于某些平均2010年硬件上具有130万行的文件需要大约0.8秒。
sed -i 's/^/03\/06\/2012|/' input.txt
sed允许您使用任何未使用的字符而不是'/'作为's'命令的字段分隔符。这样你就不需要在日期中匆匆转义'/'了。例如'sed -i's#^#03/06/2012 |#'input.txt' – 2014-03-27 22:18:17
是的,这是一个更好的解决方案。我们可以使用任何角色。谢谢! – SNathan 2014-04-10 17:38:54
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
谢谢。奇迹般有效。 – DragonBorn 2012-03-06 17:29:59