2017-11-11 434 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