我有以下运行良好的 AWK 命令。
awk -v RS="\n+?[$]{4}\n+?" '/HMDB0000008/' test.xt
然而我想要的是能够从命令行调用它并传递一个参数,以便它可以找到我想要的东西。
例如,这样的事情:
awk -f var=HMDB0000008 RS="\n+?[$]{4}\n+?" '/$var/' test.txt
然而这似乎不起作用。你能告诉我最好的方法是什么吗?
谢谢
答案1
awk 不用于$
扩展变量,此外它们是通过 -v 选项而不是 -f 传递的。此外,其中的字符串/.../
将被视为正则表达式模式,因此您需要~
对整行 ( $0
) 使用模式匹配运算符:
awk -v var=HMDB0000008 -v RS="\n+?[$]{4}\n+?" '$0 ~ var' test.txt