awk:在模式匹配中转义$

时间:2014-08-12 08:00:15

标签: awk

我的情景:
我正在写一个bash脚本,我试图使用以下命令匹配模式。

awk '/'$messageID'/' /file/path/fileName

其中$ messageID是bash变量。

我面临以下问题:
只要$messageID包含没有任何特殊字符的字符串就可以正常工作,但如果变量包含任何特殊字符,例如$命令,则不能提供正确的输出。

预期结果:
即使变量$messageID包含特殊字符,输出也应该是正确的。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:4)

为什么不将变量传递给awk?

awk -v m="$match" '$0 ~ m' file

这样,你不必担心任何角色。

测试

$ match="te$t"

$ cat a
hello this is
a te$t line
with other te$t info

$ awk -v m="$match" '$0 ~ m' a
a te$t line
with other te$t info