-1

我正在尝试远程运行命令,这就是我所拥有的

ssh host-name "find ~/dir1/dir2/ -name blah\* -exec zgrep -nc pattern \{\} \; > /tmp/temp_file ; awk 'n<$0 {n=$0}END{print n}' /tmp/temp_file"

这给了我awk: (FILENAME=temp_file FNR=1) fatal: division by zero attempted

如果在本地主机上运行,​​该命令将成功运行。这是由于 shell 解析在 ssh 中传递的命令的方式吗?我尝试转义文件路径中的 /es ,但仍然出现相同的错误。我认为我错过了一些非常基本的东西,但可以归零。将不胜感激一些帮助,谢谢。

4

1 回答 1

2

问题是$0在本地扩展,因为该命令被引用"

你可能想逃避它\$0

我也会使用管道来避免临时文件,并作为个人喜好使用xargs而不是-exec谓词find

此外,grep'-n选项在使用时什么也不做-c

我认为这应该是等效的:

ssh host-name "find ~/dir1/dir2/ -name blah\* | xargs zgrep -c | awk 'n<\$0 {n=\$0}END{print n}'"

或者,没有awk,所以不需要逃避它的论点:

ssh host-name "find ~/dir1/dir2/ -name blah\* | xargs zgrep -c | sort -n | tail -1

于 2013-10-29T23:52:58.440 回答