Linux

從 awk 列印特定 coulumn 的值 - 在遠端 SSH 中傳遞給 awk - 不工作。已嘗試“$1”

  • September 11, 2020
$ /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.

您必須在雙引號內轉義雙引號:

/usr/bin/ssh user@server "sudo sysdumpdev -e |awk '{print \$7}' |awk '{size=\$1/1024/1024; printf(\"%d\n\", size);}'" 

這兩個awk命令可以合併為一個:

/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);}' 

**編輯:**引用dave_thompson_085的評論

雖然我更喜歡本地格式,但您可以將遠端格式簡化為

ssh u@s "sudo sysdumpdev -e | awk '{print int($ 7/1024/1024)}' "

$ 7本地 shell 不將其視為參數,但(遠端)awk 將其視為欄位

引用自:https://unix.stackexchange.com/questions/608844