2012-03-06 13 views
15

ファイルの各行の先頭に特定の文字列を追加したいとします。私はsomeFile.txtで、以下の2行を持っており、パイプ -ファイル内の各行の先頭に文字列を追加する方法

Hello|there|john 
Hello|there|joel 

で日付文字列2012年3月6日を追加したいのであれば、私はhave-う

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

ことを達成するためにどのように?

注ファイルには130万行があります。

答えて

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

平均2010ハードウェアの1.3Mラインのファイルの場合、約0.8秒かかります。

+0

ありがとうございます。魅力のように動作します。 – DragonBorn

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

sedは、 's'コマンドのフィールド区切り文字として'/'の代わりに未使用の文字を使用することを許可します。そうすれば、その日の '/'をエスケープすることを混乱させる必要はありません。例えば'sed -i 's#^#03/06/2012 |#' input.txt' –

+0

これは良い解決策です。任意の文字を使用できます。ありがとうございました! – SNathan

0

Perlのソリューション:ちょうど楽しみのために、私は/ tmpに10回をベンチマーク

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

:1.3Mライン入力ファイルを使用してテスト

   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%   -- 

は、ここで作成:
perl -le 'while (1){exit if ++$n > 1300000; print $n}' > input.txt

関連する問題