【问题标题】:Show all of output but only save matching lines of output [duplicate]显示所有输出,但只保存匹配的输出行[重复]
【发布时间】:2021-01-23 02:17:28
【问题描述】:

我想监视命令的输出,并在使用过滤器打印时保存其部分输出。使用grep 将是一种过滤输出的方法,但我只能让它显示匹配项,但这不是我想要的。

就我而言,我在 URL 列表上运行 curl 并希望查看其结果,同时仅将状态代码为 000 或 200 的结果保存到文本文件中。

【问题讨论】:

    标签: bash curl


    【解决方案1】:

    使用tee /dev/stderr 复制输出。

    例如:

    seq 9 | tee /dev/stderr | grep "[42]" > result.txt
    

    seq 9输出1到9,tee /dev/stderr复制输出到stderrgrep "[42]"过滤输出并保存到文件result.txt

    或者,使用进程替换

    seq 9 | tee >(grep "[42]" > result.txt)
    

    我们可以将>(grep "[42]" > result.txt) 视为一个文件。所以tee >(grep "[42]" > result.txt) 会将输出复制到stdout 并保存到这个特殊文件中。但是文件是一个进程,就是grep "[42]" > result.txt

    【讨论】:

      猜你喜欢
      • 2011-04-23
      • 1970-01-01
      • 2014-07-21
      • 2017-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多