Grep命令错误

时间:2017-11-11 10:39:24

标签: linux bash grep

我使用grep命令根据列表过滤文件。

grep -w -F -f list.txt file1.tsv > file2.tsv

但它也给了我一些额外的线条。就像我的列表中有2130个值,而file2中有2213个唯一行。这是file1的前几行。

  Variant         Gene              
  rs1042714       ADRB2                  
  rs2297480       FDPS        
  rs12248560      CYP2C19     

以下是List.txt的一些行。

rs228729
rs228642
rs228666
rs2640909

我应该使用什么来根据列表文件过滤文件?

1 个答案:

答案 0 :(得分:1)

命令正确,要检查命令:

grep -w -F -f list.txt file1.tsv > file2.tsv

使用-v执行相同的命令以反转匹配:

grep -v -w -F -f list.txt file1.tsv > file2.tsv.invert

检查file2.tsv.invert的内容

使用您的文件测试(所有结果都可以):

grep -w -F -f list.txt file2.tsv.invert | wc -l
> 0 # it's ok

wc -l file2.tsv.invert file2.tsv # total must be equal to file1.tsv
> 2544 file2.tsv.invert
> 2997 file2.tsv
> 5541 total

wc -l file1.tsv
> 5541 file1.tsv

一切似乎都好!