簡體   English   中英

AWK打印$ 2 Breaking Bash Args

[英]AWK Print $2 Breaking Bash Args

我正在嘗試使用AWK捕獲EC2命令的輸出。 AWK部分起作用,而EC2命令起作用。 問題是,我將參數傳遞給腳本,其中之一與AWK的樣式沖突。 具體print $2

正確的細分是

cmd="/opt/aws/bin/ec2-run-instances -O $secid  -W $seckey $ami  -n $1 -g $secg -k $sshkey -t $instsize -z $2 | awk '/^INSTANCE/ {print $2}'

如您所見,我需要打印$ 2來捕獲EC2實例ID。 有沒有不更改我的arg格式的解決方法?

謝謝!

RESERVATION     r-******      ********    www.abc.com
INSTANCE        i-****      ami-*****

我相信您只需要為awk對其進行轉義,以使shell不會替換$1$2等,請注意以下幾點:

awk '/^INSTANCE/ {print \$2}'

或您的CMD變量:

cmd="/opt/aws/bin/ec2-run-instances -O $secid  -W $seckey $ami  -n $1 -g $secg -k $sshkey -t $instsize -z $2 | awk '/^INSTANCE/ {print \$2}'"
result=$(/opt/aws/bin/ec2-run-instances -O $secid  -W $seckey $ami  -n $1 -g $secg -k $sshkey -t $instsize -z $2 | awk '/^INSTANCE/ {print $2}')
for instance_id in $result; do echo $instance_id; done

嘗試這樣的事情:

cmd="/opt/aws/bin/ec2-run-instances -O $secid  -W $seckey $ami  -n $1 -g $secg -k $sshkey -t $instsize -z $2 | awk -v var=$2 '/^INSTANCE/ {print var}'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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