
私は巨大なファイルで実行される非常に長いコマンドを持っており、それを2回実行する必要があるため、ランタイムは2倍になります。
これが私が今やっていることです:
x=$(command | sort -u)
y=$(command | sort -n)
上記でandを使って行ったように、コマンドの出力をsort -u
andにリダイレクトsort -n
し、各コマンドの出力を別々の変数やファイルに保存する方法があるかどうか疑問に思います。x
y
私は成功しなかったので、次のことをするためにteeを使ってみました。
command | tee >(sort -n > x.txt) >(sort -u > y.txt)
出力をテキストファイルにリダイレクトしようとしましたが、標準出力としてのみ印刷されます。
どんな提案やアイデアがありますか?
答え1
あなたは本当に近いです
command | tee >(sort -n >/tmp/x.txt) | sort -u >/tmp/y.txt
興味があれば、>( ... )
タスクはディスクリプタパイプのパス(たとえば/dev/fd/1234
)に置き換えられるため、結果のパイプはこの外観を持ち、/dev/fd/1234
他のsort
コマンドに追加されます。
command | tee /dev/fd/1234 | sort > /path/to/elsewhere
sort
ed出力を変数としてキャプチャします(コメント、質問ではありません)
var=$(command | tee >(sort -n > x.txt) >(sort -u > y.txt) | sort -u)