2017-11-11 435 views
-1

我已经使用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 

我应该用什么来筛选基于列表文件的文件?

+2

的命令是正确的。结果意味着来自* list *的一些值在* file1 * – hek2mgl

+0

中出现多次,并在某处添加list.txt和file1.tsv并添加链接到您的问题。 – Cyrus

+0

没有值从file1中的列表多次出现,因为我删除了重复的值。 – Sarah

回答

0

的命令是正确的,要检查你的命令:

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

-v执行相同的命令反转匹配:file2.tsv.invert的

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

检查内容

测试使用的文件(所有结果都OK):

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 

似乎一切OK!

+0

file2.tsv和file2.tsv的总行数超过file1.tsv的总数。删除重复项目后,我完成了总计。当我在excel上同时检查这两个文件时,有一些值存在于file2.tsv和file2.tsv.invert中 – Sarah

+0

你有DOS文件吗?尝试dos2unix来转换它们,如果你需要。 – Indent

+0

尝试上传文件 – Indent