4

gzip で圧縮された大きなファイルdata.txt.gzがあるとしますが、多くの場合、圧縮されていないバージョンをプログラムに渡す必要があります。もちろん、スタンドアロンの unpacked を作成する代わりに、プロセス置換構文data.txtを使用できます。

./program <(zcat data.txt.gz)

ただし、状況によっては、これは面倒でエラーが発生しやすくなる可能性があります。

名前付きプロセスの置換をエミュレートする方法はありますか? つまり、アクセスされるたびにdata.txtプロセス置換に「展開」される疑似ファイルを作成します。zcat data.txt.gzシンボリックリンクが読み取り操作を別のファイルに転送するのと同じですが、この場合、一時的な名前付きパイプである必要があります。

ありがとう。

PS。やや似た質問


編集(コメントから)実際のユースケースには、生の形式での使用に加えて、一連の軽量操作(トークン化、小文字化など)で処理してから、いくつかの「重い」コード。前処理済みのコピーを保存するとディスク領域が浪費され、完全な前処理パイプラインを繰り返し再入力するとエラーが発生する可能性があります。同時に、オンザフライでパイプラインを実行すると、計算上のオーバーヘッドがわずかに発生するため、内部に詳細を隠す長寿命の疑似ファイルのアイデアが生まれました。

4

2 に答える 2

5

興味深い考えですが、私の知る限り、あなたが説明しているものは存在しません。ファイルを開くと、代わりに任意のコマンドまたはスクリプトが実際に実行されるように、カーネルのサポートが必要になります。

最善の策は、長いコマンドをシェル関数またはスクリプトに保存して、プロセス置換の呼び出しの難しさを軽減することです。

于 2014-06-05T13:30:37.357 に答える