我正在尝试使用awk从远程机器上的日志中提取一些数据,并注意到如果我进入机器运行并运行
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,但需要对命令进行更多更改.
精彩评论