webentwicklung-frage-antwort-db.com.de

So fügen Sie am Anfang jeder Zeile einer Datei eine Zeichenfolge hinzu

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.

19
DragonBorn
$ 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.

29
miku
sed -i 's/^/03\/06\/2012|/' input.txt
3
SNathan

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

1
Chris Koknat