我有一个如下输入文件(col 1是ID name,col 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
答案 0 :(得分:1)
答案 1 :(得分:1)
这样做:
grep -E '(NN.*){3,}' input.txt
您可以将3
替换为您想要的最小重复次数。
答案 2 :(得分: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