Answers:
我想在终端中查看第一个命令的输出,并将第二个命令的输出保存在文件中。
只要您不在乎所查看的内容是来自stdout还是stderr,您仍然可以使用tee
:
myscript | tee /dev/stderr | grep -P 'A|C' > out.file
将在Linux上运行;我不知道“ / dev / stderr”是否同样适用于其他* nixes。
tee /dev/tty
对于我必须将stdout
脚本的打印到终端并将其通过管道传输到stdin
另一个命令的需求而言,它的服务非常出色!谢谢!:-)
{ ... | 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)
/dev/fd/3
可以将其替换为>(cat 1>&3)
这是另一种方式sed
:
myscript | sed '/PATTERN/w out.file'
默认情况下,sed
打印每行,因此在这种情况下stdout将与stdin相同(即,您将myscript
在屏幕上看到的全部输出)。
此外,所有匹配的行都PATTERN
将被w
写入out.file
/dev/stderr
常见。/dev/tty
(表示当前终端)也可以在这里使用,并且它是standard。