我正在使用Linux终端和GAWK完成任务,目标是提取正则表达式列表并对与此表达式相关的基因进行计数。
我已经能够为每个正则表达式设置GAWK表达式,但我必须为列表的每个表达式运行它。
有没有办法设置这样的条件:If(RegExp在RegExpList中)i ++ 1?
答案 0 :(得分:2)
您可以将RegExpList声明为数组:
RegExpList["RegExp"] = 1;
然后使用此声明:
if(c in RegExpList){do something;}
如果c
为RegExp
,则条件为真。
请参阅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,我们肯定会知道。