【发布时间】:2021-01-23 02:17:28
【问题描述】:
我想监视命令的输出,并在使用过滤器打印时保存其部分输出。使用grep 将是一种过滤输出的方法,但我只能让它显示匹配项,但这不是我想要的。
就我而言,我在 URL 列表上运行 curl 并希望查看其结果,同时仅将状态代码为 000 或 200 的结果保存到文本文件中。
【问题讨论】:
我想监视命令的输出,并在使用过滤器打印时保存其部分输出。使用grep 将是一种过滤输出的方法,但我只能让它显示匹配项,但这不是我想要的。
就我而言,我在 URL 列表上运行 curl 并希望查看其结果,同时仅将状态代码为 000 或 200 的结果保存到文本文件中。
【问题讨论】:
使用tee /dev/stderr 复制输出。
例如:
seq 9 | tee /dev/stderr | grep "[42]" > result.txt
seq 9输出1到9,tee /dev/stderr复制输出到stderr,grep "[42]"过滤输出并保存到文件result.txt
或者,使用进程替换
seq 9 | tee >(grep "[42]" > result.txt)
我们可以将>(grep "[42]" > result.txt) 视为一个文件。所以tee >(grep "[42]" > result.txt) 会将输出复制到stdout 并保存到这个特殊文件中。但是文件是一个进程,就是grep "[42]" > result.txt。
【讨论】: