遠隔地には変わり続ける自動生成ファイルがありますssh user@ip cat luckyNumbers
。
Today's lucky number are
1 2 3
asdsa@!#SAxAaas 21gv3sad ASD@!#
私の目標は
- 幸運な数字を
1 2 3
Luckynumbers.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は改行を追加できます。
答え2
cat luckynumber | tail -q -n 2 | head -q -n 1 > luckynumbers.txt && cat luckynumber | tail -w -n 1 | decoder
- 次を得る幸運の数
- 静かに(ソースファイルを引用せずに)最後の2行を取り出します。
- 最後の行から2行目を次に送信します。幸運の数字.txt
- コンテンツピックアップ幸運の数再び
- 最後の行だけをすばやく削除
- そしてそれをパイプでデコーダ
私はそれがファイルに対して2番目の要求をすることを知っており、代替ファイルが2番目の要求をしないようにこれを改善しようとします(おそらくティー)、しかし今はこれが私が持っているものです。