問題タブ [process-substitution]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - プロセス置換を Python への入力ファイルとして 2 回使用する
次のpythonスクリプトを検討してください
今、私は置換されたプロセスで実行したいtest.py
、例えば、
2番目f.readlines
は空を返すようです。2 つの入力ファイルを指定せずにそれを行う方法はありますか?
bash - 「名前付き」プロセス置換のエミュレート
gzip で圧縮された大きなファイルdata.txt.gz
があるとしますが、多くの場合、圧縮されていないバージョンをプログラムに渡す必要があります。もちろん、スタンドアロンの unpacked を作成する代わりに、プロセス置換構文data.txt
を使用できます。
./program <(zcat data.txt.gz)
ただし、状況によっては、これは面倒でエラーが発生しやすくなる可能性があります。
名前付きプロセスの置換をエミュレートする方法はありますか? つまり、アクセスされるたびにdata.txt
プロセス置換に「展開」される疑似ファイルを作成します。zcat data.txt.gz
シンボリックリンクが読み取り操作を別のファイルに転送するのと同じですが、この場合、一時的な名前付きパイプである必要があります。
ありがとう。
PS。やや似た質問
編集(コメントから)実際のユースケースには、生の形式での使用に加えて、一連の軽量操作(トークン化、小文字化など)で処理してから、いくつかの「重い」コード。前処理済みのコピーを保存するとディスク領域が浪費され、完全な前処理パイプラインを繰り返し再入力するとエラーが発生する可能性があります。同時に、オンザフライでパイプラインを実行すると、計算上のオーバーヘッドがわずかに発生するため、内部に詳細を隠す長寿命の疑似ファイルのアイデアが生まれました。
diff - プロセス置換による stdout へのパッチ
私は次のようなことをしようとしています:
私が得ている結果は次のとおりです。
プロセス置換を使用してパッチを適用したファイルを作成するにはどうすればよいですか?
bash - tee >(cat -n) < tmpfile 繰り返す前に tmpfile を完全に出力します
tmpfile には次のものが含まれます。
質問のタイトルのコマンドの出力は次のとおりです。
ティーと猫は名前付きパイプを介して接続されているため、ティーが次の行を出力する前に、猫がターミナルへの出力の送信を完了することを期待していました。このようなもの:
誰かがここで何が起こっているのか説明してもらえますか? ティーがちょうど勝っている競合状態の可能性を考慮しましたが、これはサイズが数 KB のファイルでも発生します。ここにはもっと何かがあると感じています。
ありがとう。
bash - eval とプロセスの置換を含む関数の後でループが停止する
環境
リストを反復処理するスクリプトがあります。各反復で、'eval' を介して 2 つのリモート ファイルを比較するための 'diff' コマンドを構築する関数を呼び出すことが期待されます。
「diff」コマンドは、2 つのプロセス置換を通じて入力を取得します。各プロセスは、パスワードなしの認証を実行する「ssh」を介してリモート ファイルをキャットします (公開/秘密キーを介して)。
「diff」および「ssh」の実行は、スクリプトからテストされており、正常に動作します。
コード
ここでは、非常に短いバージョンのスクリプトを投稿しますが、同じ問題が発生します。
期待される結果
問題
スクリプトは最初の繰り返しの後に停止します。
質問
ループが停止する理由を知っていますか? そしてそれを解決する方法は?
bash - bash プロセス置換における GNU 並列引数プレースホルダー
次の GNU 並列コマンドがあります。
ディスクに書き込む前に出力を圧縮したいと思います。通常、これを にパイプするだけですgzip -c
が、残念ながら、この特定の Python スクリプトには出力を stdout に送信するオプションがありません。次に、代わりにプロセス置換を使用できると考えました。以下を試しました。
ただし、この後者の例の中括弧は、GNU 並列引数のプレースホルダーとしてではなく、サブプロセスによって文字どおりに解釈されます。これを機能させる方法はありますか?
linux - BASH ネストされたプロセス置換
次のようなwhileループでプロセス置換のstdoutを使用しようとしています:
新しいデータがファイルに追加されるたびに、FILE_1 と FILE_2 の最後の行をマージすることになっています。もちろん、while ループで行を出力するだけではありませんが、これは良い例です。
残念ながら、このスクリプトを実行すると、ターミナルに留まって何もしません。
この行だけを実行します:
完全に機能し、ファイルにデータを追加すると、端末に出力が表示されます。
stdout を別のプロセスにパイプするために使用する必要がある特別な構文はありますか?
やってみました
しかし、それはまだ端末に座っているだけです。