Shell 将awk与ssh结合使用
我正在尝试远程运行一个命令,这就是我所拥有的Shell 将awk与ssh结合使用,shell,unix,ssh,awk,Shell,Unix,Ssh,Awk,我正在尝试远程运行一个命令,这就是我所拥有的 ssh host name“find~/dir1/dir2/-name blah\*-exec zgrep-nc pattern\{\}>/tmp/temp_file;awk'n问题是,$0在本地展开,因为命令引用了” 您可能希望将其转义为\$0 我还将使用管道来避免临时文件,并且作为个人偏好,使用xargs而不是find的-exec谓词 另外,grep的-n选项在使用-c时不起任何作用 我认为这应该相当于: ssh主机名“find ~/dir1/d
ssh host name“find~/dir1/dir2/-name blah\*-exec zgrep-nc pattern\{\}>/tmp/temp_file;awk'n问题是,$0
在本地展开,因为命令引用了”
您可能希望将其转义为\$0
我还将使用管道来避免临时文件,并且作为个人偏好,使用xargs
而不是find
的-exec
谓词
另外,grep
的-n
选项在使用-c
时不起任何作用
我认为这应该相当于:
ssh主机名“find ~/dir1/dir2/-name blah\*| xargs zgrep-c | awk'nWhy you's writing to temp file,而不是将find
输出管道传输到awk
?我刚开始学习awk,这是我第一次使用它,可能你建议的方法更好,但我只是想找到一个更容易编写的解决方案。是的,成功了。但是,在本地运行相同的命令时,不会对$0执行转义。您能解释一下转义$0的必要性吗?因为您有一个类似于“…'$0'…”
的字符串,在ssh
命令运行之前,它被本地shell扩展为“…'/bin/sh'…”
。当您在本地运行命令时,您不会将它括在“
字符中,因此您有…'$0'…
,并且shell变量不会在”
引号中展开