接続パイプを使用した部分リダイレクト

接続パイプを使用した部分リダイレクト

遠隔地には変わり続ける自動生成ファイルがありますssh user@ip cat luckyNumbers

Today's lucky number are 
1 2 3 
asdsa@!#SAxAaas 21gv3sad ASD@!#

私の目標は

  • 幸運な数字を1 2 3Luckynumbers.txtにリダイレクトし、
  • 残りのファイルを自分のプログラムにパイプします。decoder
  • ファイル全体を保存したり、ファイルに対する2番目の要求を行わずにこれを実行したいと思います。

このようにデータストリームを分割することが可能かどうかはわかりません。

ベストアンサー1

以下は、他のすべての行をstdoutに送信しながら、stdinの行2を特定のファイルに書き込むいくつかの方法です。

sedを使用してください:

ssh remotehost cat luckynumbers |
sed -e '2 { w luckynumbers.txt
            d
          }' |
decoder

awkを使用してください:

ssh remotehost cat luckynumbers |
awk 'NR == 2 { print > "luckynumbers.txt" }
     NR != 2 { print }' |
decoder

入力の最後の行が改行で終わらない場合、awkは改行を追加できます。

おすすめ記事