2017-07-07 106 views
-1

我想比較具有不同數量的內容的兩個巨大的CSV文件。只有一列包含相同的值,例如它們也存在於同一列中的另一個文件中,這個值要大得多。比較兩個CSV文件的列並刪除差異

所以我想保留其中一個文件的行中第二個文件中具有相同值的行也存在。

例子:

File a 
value1,value2,value3,... 
value4,value5,value6,... 
value7,value8,value9,... 

File b: 
value10,value2,value11,... 
value12,value13,value14,... 

最終文件B(或者一個完整的新文件)應該是這樣的:

value10,value2,value11,... 

我不相信它是很難,但此刻我不知道如何做到這一點。我怎麼能用linux工具或bash/python腳本來達到目標​​?

感謝您的任何提示!

+0

基本上你想實現B.Columns-A.Colums? –

+1

什麼是「巨大」以及文件大小(和行數)的差異有多大? – hop

+0

@ChetanKulkarni正確,想擺脫與一列相關的差異。 – Kay

回答

0

在AWK:

$ awk -F, ' 
NR==FNR {    # hash elements in the first file to a 
    for(i=1;i<=NF;i++) 
     a[$i] 
    next 
} 
{      # second file 
    for(i=1;i<=NF;i++) # go thru all elements 
     if($i in a) { # if match 
      print  # output 
      next  # and skip to next record 
     } 
    } 
' file1 file2 
value10,value2,value11 

這一個散列在存儲器中的第一個文件。如果按巨大的你的意思是你的記憶力超過你的能力,這可能不是你的解決方案。

+0

嗯,「巨大」可能不是正確的術語。它可以由內存處理。我認爲這有幫助。謝謝! – Kay

相關問題