我想将 SSH 调试信息与其他输入分开(并记录)。但是,如果我只是将 stderr 重定向到一个日志文件,我就有可能将来自 SSH 的输出和来自主机上的远程进程的输出结合起来(这可能会向 stderr 发送一些东西):
$ ssh -v somemachine 2> file.log
所以,我只想过滤掉那些匹配“debug1”的行:
$ ssh -v somemachine | awk '/debug1/ {print > "file.log"; next} {print}'
到目前为止很好,但是 ssh 的调试输出到 stderr。所以...
$ ssh -v somemachine 2>& | awk '/debug1/ {print > "file.log"; next} {print}'
又被坑了!我不想混合标准输出和标准错误。坏的!
像我这样的孩子是做什么的?我正要走命名管道或一些这样的狂野路线,但实际上,我需要知道的是如何让 awk 仅匹配来自 stderr 的模式。