0

我有一个问题。对你的帮助表示感谢。

我有一个如下的输入文件(第 1 列是 ID 名称,第 2 列由一组值组成)。我是否可以只显示“NN”出现次数等于或大于 3 的行?我想这可能可以使用 grep 命令(也许是模式选项)来完成,但我不知道该怎么做。

输入文件:

ID_a NN;AT;AA;AC;NN
ID_b NN;NN;NN;NN;NN
ID_c NN;NN;AC;AC;NN
ID_e NN;AG;NN;NN;AC
ID_f AA;TT;CG;AA;TA

所需的输出文件

ID_b NN;NN;NN;NN;NN
ID_c NN;NN;AC;AC;NN
ID_e NN;AG;NN;NN;AC
4

3 回答 3

1

这将做到:

grep -E '(NN.*){3,}' input.txt

你可以3用任何你想要的最小重复次数来替换。

于 2013-08-27T04:37:57.843 回答
1

grep 'NN.*NN.*NN' < input.file

功能列表在这里

.*指重复任意次数的任意数量的字符。它匹配NN之间的东西。

于 2013-08-27T04:33:38.470 回答
1
$ awk 'gsub(/NN/,"&")>=3' file
ID_b NN;NN;NN;NN;NN
ID_c NN;NN;AC;AC;NN
ID_e NN;AG;NN;NN;AC

或者,如果您愿意:

$ awk -F'NN' 'NF>=4' file
ID_b NN;NN;NN;NN;NN
ID_c NN;NN;AC;AC;NN
ID_e NN;AG;NN;NN;AC
于 2013-08-28T04:02:32.657 回答