Ich möchte am Anfang jeder Zeile einer Datei eine bestimmte Zeichenfolge hinzufügen. Wenn ich also die zwei Zeilen in someFile.txt habe und einen Datums-String 03/06/2012 mit
Hello|there|john
Hello|there|joel
Ich hätte-
03/06/2012|Hello|there|john
03/06/2012|Hello|there|joel
Wie kann ich das erreichen?
Hinweis: Ich habe 1,3 Millionen Zeilen in der Datei.
$ awk '{print "03/06/2012|" $0;}' input.txt > output.txt
Es dauert etwa 0,8 Sekunden für eine Datei mit 1,3 Millionen Zeilen auf durchschnittlicher 2010er Hardware.
sed -i 's/^/03\/06\/2012|/' input.txt
Perl-Lösung:
Perl -ne 'print "03/06/2012|$_"' input.txt > output.txt
Nur zum Spaß habe ich 10 Runs in/tmp verglichen:
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% --
Getestet mit einer 1,3-MB-Zeileneingabedatei, die hier erstellt wurde:Perl -le 'while (1){exit if ++$n > 1300000; print $n}' > input.txt