大きな(〜870,000,000行)テキストファイルから特定のグループの行を引き出すことを検討しています。たとえば、50行のファイルでは、3〜6行、18〜27行、39〜45行が必要です。大きなテキストファイルから行のグループを読み取る
スタックオーバーフローを閲覧から、私はbashコマンドことを発見した:
tail -n+NUMstart file |head -nNUMend
がNUMstartから始まり、NUMendに行くラインの単一の行またはグループを取得するための最速の方法です。しかし、複数のグループの行を読むときは、これは非効率的です。通常、この手法はそれほど重要ではありませんが、ファイルが大きければ大きな違いになります。
上記のコマンドを各行のグループに使用するよりも良い方法がありますか?私はその答えがおそらくbashコマンドになると仮定していますが、仕事を最も良くする言語/ツールには本当にオープンしています。
これは 'awk'よりもはるかに速いのか不思議です。 – codeforester
これはファイル全体をスキャンし、最後の行の後ろにあるexitを使って 'awk'より速くすることはできません。 – karakfa
最後のコマンドとして '45q'を追加するとそれが修正されます。 –