awk替换shell变量

时间:2013-12-17 08:46:52

标签: bash variables awk substitution

我正在努力使用awk替换,由于某种原因,以下代码不能替代任何东西,它只是打印输出不变。谁能看到我在这里失踪的东西?任何帮助都会非常适合! (PS!$ DOCPATH和$ SITEPATH是shell变量,它们在我的awk设置中工作得很好)。

awk -v docpath="$DOCPATH" -v sitepath="$SITEPATH" '{ sub( /docpath/, sitepath ) } { print }'

3 个答案:

答案 0 :(得分:8)

话说:

sub( /docpath/, sitepath )

导致awk替换模式docpath,而不是变量docpath

你需要说:

awk -v docpath="$DOCPATH" -v sitepath="$SITEPATH" '{sub(docpath, sitepath)}1' filename

答案 1 :(得分:3)

无法在sed中写这个:

sed 's/'"$DOCPATH"'/'"$SITEPATH"'/' input

答案 2 :(得分:1)

/docpath/将搜索文字字符串“docpath”,而不是您想要的变量。只需使用sub(docpath, sitepath)即可。

N.b。如果同一行中可能有多个匹配项,则您需要gsub而不是sub