テキストをstdout
。例:
$ myscript
Line A
Line B
Line C
$ myscript | grep -P 'A|C' > out.file
$ cat out.file
Line A
Line C
端末で最初のコマンドの出力を見て、2番目のコマンドの出力をファイルに保存したいと思います。同時に。を使ってみましたtee
が、結果はありませんでした。または、より良い方法は、次を使用することです。結果は正反対です。
答え1
端末で最初のコマンドの出力を見て、2番目のコマンドの出力をファイルに保存したいと思います。
あなたが見るものがどこから来たのか気にしない限り標準出力または標準エラー、以下を引き続き使用できますtee
。
myscript | tee /dev/stderr | grep -P 'A|C' > out.file
Linuxでは動作します。 "/dev/stderr"が他の* nixでも動作するかどうかわかりません。
答え2
{ ... | tee /dev/fd/3 | grep -e A -e C > out.file; } 3>&1
または、プロセス置換(ksh93、zsh、またはbash)を使用してください。
... | tee >(grep -e A -e C > out.file)
zshを使う:
... >&1 > >(grep -e A -e C > out.file)
答え3
別のアプローチは次のとおりですsed
。
myscript | sed '/PATTERN/w out.file'
デフォルトでは、受信したsed
すべての行を印刷します。標準入力(myscript
これは標準出力この場合)すなわち、myscript
出力全体が画面に表示される。
また、一致するすべての行は次のファイルに書き込まれPATTERN
ます。w
out.file
答え4
teeコマンドの使用方法を指定していませんが、次のように動作します。
myscript | grep -P 'A|C' | tee out.file
少なくとも数分前は私のサーバーで実行していました。