我的情景:
我正在写一个bash脚本,我试图使用以下命令匹配模式。
awk '/'$messageID'/' /file/path/fileName
其中$ messageID是bash变量。
我面临以下问题:
只要$messageID
包含没有任何特殊字符的字符串就可以正常工作,但如果变量包含任何特殊字符,例如$
命令,则不能提供正确的输出。
预期结果:
即使变量$messageID
包含特殊字符,输出也应该是正确的。
任何帮助都将不胜感激。
答案 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