$ /usr/bin/ssh user@server "sudo sysdumpdev -e |awk '{print \$7}' |awk '{size=\$1/1024/1024; printf("%d\n", size);}'"
Syntax Error The source line is 1.
The error context is
{size=$1/1024/1024; >>> printf(% <<< dn, size);}
awk: 0602-502 The statement cannot be correctly parsed. The source line is 1.
答え1
二重引用符の中に二重引用符をエスケープする必要があります。
/usr/bin/ssh user@server "sudo sysdumpdev -e |awk '{print \$7}' |awk '{size=\$1/1024/1024; printf(\"%d\n\", size);}'"
これら2つのawk
コマンドを1つにまとめることができます。
/usr/bin/ssh user@server "sudo sysdumpdev -e |awk '{printf(\"%d\n\", \$7/1024/1024);}'"
awk
別の方法は、ローカルコンピュータでコマンドを実行することです。
/usr/bin/ssh user@server sudo sysdumpdev -e |awk '{print $7}' |awk '{size=$1/1024/1024; printf("%d\n", size);}'
/usr/bin/ssh user@server sudo sysdumpdev -e |awk '{printf("%d\n", $7/1024/1024);}'
編集する:引用するデイブ・トンプソン_085のコメント
私はローカル形式を好みますが、リモート形式を単純化することで、次のようにすることができます。
ssh u@s "sudo sysdumpdev -e | awk '{print int($ 7/1024/1024)}' "
-$ 7
ローカルシェルではパラメータとして扱われませんが、(リモート)awkではフィールドとして扱われます。