我正在努力使用awk替换,由于某种原因,以下代码不能替代任何东西,它只是打印输出不变。谁能看到我在这里失踪的东西?任何帮助都会非常适合! (PS!$ DOCPATH和$ SITEPATH是shell变量,它们在我的awk设置中工作得很好)。
awk -v docpath="$DOCPATH" -v sitepath="$SITEPATH" '{ sub( /docpath/, sitepath ) } { print }'
答案 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
。