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