関連がありますが、満足のいく答えはありません。大容量のテキストファイルを約500語単位に分割する方法は?
テキストファイルを取得しようとしています(http://mattmahoney.net/dc/text8.zip)10 ^ 7個以上の単語を1行にすべて入れ、N単語を含む行に分割します。現在のアプローチはうまくいきますが、やや遅くて不快です(シェルスクリプトを使用)。
i=0
for word in $(sed -e 's/\s\+/\n/g' input.txt)
do
echo -n "${word} " > output.txt
let "i=i+1"
if [ "$i" -eq "1000" ]
then
echo > output.txt
let "i=0"
fi
done
より速く、よりコンパクトにする方法についてのヒントはありますか?
ベストアンサー1
使用xargs
(17秒):
xargs -n1000 <file >output
-n
最大引数数を定義するフラグを使用します。必要な制限にxargs
変更するだけです。1000
500
10 ^ 7の単語を含むテストファイルを作成しました。
$ wc -w file
10000000 file
時間統計は次のとおりです。
$ time xargs -n1000 <file >output
real 0m16.677s
user 0m1.084s
sys 0m0.744s