回答:
ではなく、split
後で簡単に名前を変更するか、次のように変更できますawk
。
awk '{filename = "wrd." int((NR-1)/10000) ".txt"; print >> filename}' inputfile
これは当時は使用できませんでしたが、最新バージョン(≥ 8.16
)gnu split
では--additional-suffix
スイッチを使用して、結果の拡張機能を制御できます。からman split
:
--additional-suffix=SUFFIX
append an additional SUFFIX to file names.
そのため、そのオプションを使用する場合:
split -dl 10000 --additional-suffix=.txt words wrd
結果の断片は自動的に終了し.txt
ます:
wrd00.txt
wrd01.txt
.........
gnu split
、の一部に関するものですgnu coreutils
。OSXでもインストールできますcoreutils
経由でhomebrew
はなく、ノートデフォルトでは、OSX上で、というgnu
ユーティリティがしているg
(例えば自分の名前の前に追加gstat
の代わりstat
)としてそれボークますのでgsplit
(またはガイドに従ってPATHを変更し、ここであなたがしたい場合split
OSX上で使用する場合split
)。HTH。
gsplit
して数値のサフィックス(-d)を取得します。
このようなタスクは、シェルで管理するのが最適です。splitを使用し、単純なループを作成してファイルの名前を変更します。例えば
for file in wrd.*
do
mv "$file" "$file.txt"
done
wrd.01、wrd.02などのファイルの名前を変更して、すべての拡張子が.txtになるようにします。
split+mv
コンボは1000万行の入力ファイル(75 MB)の場合(約3 秒対18秒)よりも6倍以上高速です...各行のテキストは独自の行番号でした... 「明白な」:)awk
split + mv
である75倍速くよりawk
:存在する場合には100倍以上のファイルが、split + mv
ある1.5倍速くよりawk
。だから、私にとっては、このsplit + mv
方法が勝ちです。それは簡潔なものであり(ほぼ間違いなく)、よりも高速ですawk
。
for file in wrd.*; do mv "$file" "$file.txt"; done
:)