"Is in" GAWK 中的条件

"Is in" condition in GAWK

我正在使用 Linux 终端和 GAWK 执行任务,objective 是提取正则表达式列表并计算与该表达式相关的基因。

我已经能够设置一个 GAWK 表达式来为每个正则表达式执行此操作,但我必须 运行 为列表中的每个表达式设置它。

有没有办法设置这样的条件:If (RegExp is in RegExpList) i++1?

您可以将 RegExpList 声明为数组:

RegExpList["RegExp"] = 1;

然后使用这个语句:

if(c in RegExpList){do something;}

如果cRegExp,则条件为真。

参考gawk manual

我是这样做的:

gawk 'BEGIN{i=0}
{while ((getline line < "regexpinput.txt") !=FN) RegExpList[line]=1;
if ( in RegExpList) i++1}
END{print i}' tabular_file.txt

感谢@nopasara 的帮助。

很可能这是正确的方法:

awk '
NR==FNR{ re = (NR>1 ? re "|" : "") "(" [=10=] ")"; next }
[=10=] ~ re { cnt++ }
END { print cnt+0 }
' regexpinput.txt tabular_file.txt

但如果你 post MCVE 我们肯定知道。