[英]Escape awk command in ssh
我有以下命令;
su user1 -c "ssh user1@192.168.1.2 awk '$5\==1{print\$3}' filename.log" | uniq -c
運行命令會出現錯誤:
awk: ==1{print
awk: ^ syntax error
awk: cmd. line:1: ==1{print
awk: cmd. line:1: ^ unexpected newline or end of string
我嘗試了幾種轉義方法,但是沒有運氣。 任何建議將不勝感激。 謝謝。
我會為此:
su user1 -c "ssh user1@192.168.1.2 \"awk '\\\$5==1{print \\\$3}' filename.log\"" | uniq -c
^^ ^^
基本上,首先,您需要想象如果您是user1
如何執行命令:
ssh user1@192.168.1.2 "awk '\\\$5==1{print \\\$3}' filename.log"
然后將其介紹給su user1 ...
轉義引號。
逃避正確的方式非常棘手。 您可以這樣寫:
su user1 -c 'ssh user1@192.168.1.2 awk \"\\\$5 == 1 {print \\\$3}\" filename.log' | uniq -c
或像這樣:
su user1 -c "ssh user1@192.168.1.2 awk \'\\\$5 == 1 {print \\\$3}\' filename.log" | uniq -c
也就是說,您需要在引號字符串中轉義引號和 $
符號。 由於$
符號始終需要轉義,因此在這種情況下,您需要對其進行兩次轉義,這就是\\\\\\
的原因。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.