大容量ファイルの列ヘッダーの名前を変更しようとしている最も効率的な方法を知りたいです。ファイル長は10M~50Mラインで、各ラインは約100文字程度で、合計10個のカラムがあります。
誰かが同様の質問をして最初の行を削除しましたが、最良の答えは「尾」に関連していました。sedを使用して大容量ファイルヘッダを効率的に削除しますか?
私の推測は次のとおりです
bash-4.2$ seq -w 100000000 1 125000000 > bigfile.txt
bash-4.2$ tail -n +2 bigfile.txt > bigfile.tail && sed '1 s/^/This is my first line\n/' bigfile.tail > bigfile.new && mv -f bigfile.new bigfile.txt;
より速い方法がありますか?
答え1
- 新しいヘッダーを新しいファイルに出力します
printf "This is my first line\n > bigfile.new
。 - 残りを提供するには、追加のリダイレクトを使用してください
tail
。bigfile
>>
注:tail +2
「GNUism」 - ほとんどのLinuxディストリビューションでは機能しますが、POSIXと互換性がなく、他のUnicesでは機能しない可能性があります。
答え2
Linuxを想定すると、bash
質問のコードよりも高速になる可能性があります。
(echo "New headers";tail +2 bigfile.txt) > newbigfile.txt && mv newbigfile.txt bigfile.txt