Ответ 1
$ awk '{print "03/06/2012|" $0;}' input.txt > output.txt
Занимает около 0,8 секунды для файла с 1.3M-строками на среднем оборудовании 2010 года.
Я хочу добавить определенную строку в начале каждой строки файла. Итак, если у меня есть две строки в файле someFile.txt и вы хотите добавить строку даты 03/06/2012 с pipe -
Hello|there|john
Hello|there|joel
У меня было бы -
03/06/2012|Hello|there|john
03/06/2012|Hello|there|joel
Как это сделать?
Примечание. У меня есть 1,3 миллиона строк в файле.
$ awk '{print "03/06/2012|" $0;}' input.txt > output.txt
Занимает около 0,8 секунды для файла с 1.3M-строками на среднем оборудовании 2010 года.
sed -i 's/^/03\/06\/2012|/' input.txt
Решение Perl:
perl -ne 'print "03/06/2012|$_"' input.txt > output.txt
Просто для удовольствия, я тестировал 10 запусков в /tmp:
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