运行 通过 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
我正在尝试从远程服务器上的文件中获取一组特定的值。通过终端执行该命令时,该命令工作正常。
第一个 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