将参数传递给 AWK

将参数传递给 AWK

我有以下运行良好的 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

相关内容