2017-12-27 320 views
0

我從系統中得到一個變量返回一個字符串,如:AWK顯示變量

$VARIABLE/dir/text.file 

我tryed使用gsub,但我失去了一些東西:

onstat -c | grep ^MSGPATH | awk 'gsub (/$INFORMIXDIR/, ${INFORMIXDIR}) {print $2}' 

返回錯誤:

awk: cmd. line:1: gsub (/$INFORMIXDIR/, ${INFORMIXDIR}) {print $2} 
awk: cmd. line:1:      ^syntax error 
awk: cmd. line:1: gsub (/$INFORMIXDIR/, ${INFORMIXDIR}) {print $2} 
awk: cmd. line:1:         ^0 is invalid as number of arguments for gsub 

可能是什麼問題?

+0

你有一些onstat -c產生的輸出嗎? –

+0

但你想在awk中打​​印變量值嗎?或者是什麼? –

+0

它返回:$ INFORMIXDIR/tmp/online.log,我需要使用該值後,INFORMIXDIR是一個環境變量。 –

回答

2

因爲awk正文是在單引號中,所以無法展開shell變量。安全地做到這一點的方式是通過與-v選項awk的值:

... | awk -v dir="$INFORMIXDIR" 'gsub (/\$INFORMIXDIR/, dir) {print $2}' 

注意,您必須逃脫正則表達式的$,因爲它是一個特殊的正則表達式字符(意爲「結束字符串「)

+0

上使用這個值,它就像一個魅力,謝謝! –