"进入" GAWK中的条件

时间:2016-11-03 21:38:17

标签: linux awk gawk

我正在使用Linux终端和GAWK完成任务,目标是提取正则表达式列表并对与此表达式相关的基因进行计数。

我已经能够为每个正则表达式设置GAWK表达式,但我必须为列表的每个表达式运行它。

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

3 个答案:

答案 0 :(得分:2)

您可以将RegExpList声明为数组:

RegExpList["RegExp"] = 1;

然后使用此声明:

if(c in RegExpList){do something;}

如果cRegExp,则条件为真。

请参阅gawk manual以供参考。

答案 1 :(得分:0)

我设法做到了这样:

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

感谢@nopasara的帮助。

答案 2 :(得分:0)

这是正确的方法:

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

但如果您发布MCVE,我们肯定会知道。