我正在尝试使用 awk 从远程机器上的日志中提取一些数据,并且注意到如果我 ssh 进入机器并运行

awk '{print $0}' /path/to/log.txt

我得到了预期的输出(包含日志消息、堆栈跟踪等),但是如果我运行
ssh host "awk '{print $0}' /path/to/log.txt"

然后输出如下所示:
0
1
0
0
1
1
1
1
1
1

任何想法为什么会发生这种情况?

最佳答案

逃避美元符号。

ssh host "awk '{print \$0}' /path/to/log.txt"

因为单引号不保护本地端的 $0,它会在发送到远程端之前被替换。

你也可以试试:
ssh host 'awk "{print \$0}" /path/to/log.txt'

这可以保护远程端的 $0,但它需要对您的命令进行更多更改。

关于ssh - ssh 主机 "awk ' 没有输出 {print $0 }'/path/to/log.txt",我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10885901/

10-17 01:31