AWK显示变量
问题描述:
我从系统中得到一个变量返回一个字符串,如: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
可能是什么问题?
答
因为awk正文是在单引号中,所以无法展开shell变量。安全地做到这一点的方式是通过与-v
选项awk的值:
... | awk -v dir="$INFORMIXDIR" 'gsub (/\$INFORMIXDIR/, dir) {print $2}'
注意,您必须逃脱正则表达式的$
,因为它是一个特殊的正则表达式字符(意为“结束字符串“)
+0
上使用这个值,它就像一个魅力,谢谢! –
你有一些onstat -c产生的输出吗? –
但你想在awk中打印变量值吗?或者是什么? –
它返回:$ INFORMIXDIR/tmp/online.log,我需要使用该值后,INFORMIXDIR是一个环境变量。 –