Variables 带有环境内容的awk显示变量
我从system one中得到一个返回字符串的变量,如:Variables 带有环境内容的awk显示变量,variables,awk,string-substitution,Variables,Awk,String Substitution,我从system one中得到一个返回字符串的变量,如: $VARIABLE/dir/text.file 我试图使用gsub,但我遗漏了一些东西: onstat -c | grep ^MSGPATH | awk 'gsub (/$INFORMIXDIR/, ${INFORMIXDIR}) {print $2}' 它返回错误: awk: cmd. line:1: gsub (/$INFORMIXDIR/, ${INFORMIXDIR}) {print $2} awk: cmd. line:1:
$VARIABLE/dir/text.file
我试图使用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}'
注意,您必须在正则表达式中转义
$
,因为它是一个特殊的正则表达式字符(意思是“字符串结束”)因为awk正文在单引号中,所以不能展开shell变量。安全地执行此操作的方法是使用-v
选项将值传递给awk:
... | awk -v dir="$INFORMIXDIR" 'gsub (/\$INFORMIXDIR/, dir) {print $2}'
请注意,您必须转义正则表达式中的
$
,因为它是一个特殊的正则表达式字符(意思是“字符串结束”)您是否有onstat-c生成的一些输出?但是是否要在awk中打印变量值?或者什么?它返回:$INFORMIXDIR/tmp/online.log,然后我需要使用该值,INFORMIXDIR是一个环境变量。您需要的是在AWK中打印$INFORMIXDIR/tmp/online.log的环境值,是吗?是的,我想在我的脚本中使用这个值。你有onstat-c生成的一些输出吗?但是你想在awk中打印变量值吗?或者什么?它返回:$INFORMIXDIR/tmp/online.log,我需要在后面使用该值,INFORMIXDIR是一个环境变量。您需要的是在AWK中打印$INFORMIXDIR/tmp/online.log的环境值,对吗?是的,我希望在我的脚本上使用该值可能避免正则表达式转义并使用[$]
而不是使用正则表达式转义,而是使用[$]