Grep

輸出到標準輸出,同時 grep 到文件中

  • May 6, 2016

我有一個將文本輸出到stdout. 我想在我的終端中看到所有這些輸出,同時我想過濾一些行並將它們保存在一個文件中。例子:

$ myscript
Line A
Line B
Line C

$ myscript | grep -P 'A|C' > out.file

$ cat out.file
Line A
Line C

我想在終端中查看第一個命令的輸出,並將第二個命令的輸出保存在一個文件中。同時。我嘗試使用tee,但沒有結果,或者更好,結果相反

我想在終端中查看第一個命令的輸出,並將第二個命令的輸出保存在一個文件中。

只要您不關心您正在查看的內容是來自stdout還是stderr,您仍然可以使用tee

myscript | tee /dev/stderr | grep -P 'A|C' > out.file

將在 linux 上工作;我不知道“/dev/stderr”是否同樣適用於其他 *nixes。

{ ... | 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)

引用自:https://unix.stackexchange.com/questions/71492