gzip で圧縮された大きなファイルdata.txt.gz
があるとしますが、多くの場合、圧縮されていないバージョンをプログラムに渡す必要があります。もちろん、スタンドアロンの unpacked を作成する代わりに、プロセス置換構文data.txt
を使用できます。
./program <(zcat data.txt.gz)
ただし、状況によっては、これは面倒でエラーが発生しやすくなる可能性があります。
名前付きプロセスの置換をエミュレートする方法はありますか? つまり、アクセスされるたびにdata.txt
プロセス置換に「展開」される疑似ファイルを作成します。zcat data.txt.gz
シンボリックリンクが読み取り操作を別のファイルに転送するのと同じですが、この場合、一時的な名前付きパイプである必要があります。
ありがとう。
PS。やや似た質問
編集(コメントから)実際のユースケースには、生の形式での使用に加えて、一連の軽量操作(トークン化、小文字化など)で処理してから、いくつかの「重い」コード。前処理済みのコピーを保存するとディスク領域が浪費され、完全な前処理パイプラインを繰り返し再入力するとエラーが発生する可能性があります。同時に、オンザフライでパイプラインを実行すると、計算上のオーバーヘッドがわずかに発生するため、内部に詳細を隠す長寿命の疑似ファイルのアイデアが生まれました。