簡體   English   中英

在ssh中轉義awk命令

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM