grep -f只返回第一个匹配(很多)

bru*_*e01 3 unix command-line grep

试图从命令行中获得更多:

我有一个文件:

CHR25   1192279 Y       Exonic  NA      exon    2       [1/1]   1192145 1192322
CHR25   1192279 Y       Exonic  NA      CDS     2       [1/1]   1192145 1192322  
CHR25   1739394 Y       Exonic  NA      CDS     2       [1/2]   1739294 1739456
Run Code Online (Sandbox Code Playgroud)

我希望根据第2列获得独特的线条.我已经完成了

cat file | cut -f 2 | uniq > grepfile
Run Code Online (Sandbox Code Playgroud)

但我不确定如何使用grep -f我之前的每条线路获得一场比赛.使用-m1 or | head -n 1仅给出第一个匹配的行.我希望第一行匹配'grepfile'中的每一行.

期待答案=)

Ala*_*rry 6

这个awk命令通过构建已经看到的第二个字段值的关联数组来工作.

awk '!s[$2]++'
Run Code Online (Sandbox Code Playgroud)

关联数组被调用s.该表达式查找$ 2(输入行的第二列)并应用一个postincrement,它将在第一次调用时返回0,之后返回非零值.然后我反转它,第一次看到每个$ 2产生1,然后每次产生0.如果选择表达式为true,则awk的默认操作是打印.

当线数大到足以再次回到0时,请注意.