运行 通过 ssh 在远程服务器上执行 awk 命令

Run awk comand on a remote server through ssh

我正在尝试从远程服务器上的文件中获取一组特定的值。通过终端执行该命令时,该命令工作正常。

第一个 ssh 命令

sshpass -p password ssh -T user@ip

第二个 Awk 命令

find /opt/Info_Source/*daily* -type f -mtime -1 -exec zcat {} \; 2>/dev/null | awk -F, -v OFS=',' ' ~ /Valid/ && length() {print }'

但如果我将它们组合在一个脚本中

#!/bin/ksh
emp_id=`sshpass -p password  ssh -T user@ip -q << EOF
    find /opt/Info_Source/*daily* -type f -mtime -1 -exec zcat {} \; 2>/dev/null | 
    awk -F, ' ~ /Valid/ && length() {print }'
                        exit
                        EOF `
                        
echo "$emp_id" > Request.txt

我收到这个错误

awk:  ~ /Valid/ && length() {print }
awk:  ^ syntax error

知道我该如何解决这个问题吗?

awk 变量在发送脚本之前在本地扩展为 shell 变量。引用此处文档分隔符以按原样发送此处文档。

(另外,去掉命令替换,直接写入文件即可。)

#!/bin/ksh

sshpass -p password  ssh -T user@ip -q << 'EOF' > Request.txt
find /opt/Info_Source/*daily* -type f -mtime -1 -exec zcat {} \; 2>/dev/null | 
awk -F, ' ~ /Valid/ && length() {print }'
EOF