2017-07-07 28 views
-1

異なるサイズの2つのCSVファイルを比較したいと思います。同じ列にある他のファイルにも存在するような1つの列には同じ値が含まれていますが、これははるかに大きくなります。2つのCSVファイルの列を比較して差分を削除する

私は、2番目のファイルの同じ値を持つ行も存在するファイルの1つに行を残したいと思います。

例:エンドファイルb(または完全に新しいファイル)で

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

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

次のようになります。

value10,value2,value11,... 

私はそれは難しいが、現時点ではということだとは思いません私はこれをどのように達成するか考えていません。私はLinuxのツールやbash/pythonスクリプトを使ってどうやってそこに行くことができますか?

ありがとうございました! awkでは

+0

基本的にB.Columns-A.Columsを達成したいですか? –

+1

「巨大」とは何ですか?ファイルサイズ(および行数)の違いはどれくらいですか? – hop

+0

@ChetanKulkarniが正しく、1つの列に関連する相違を取り除きたい。 – Kay

答えて

0

$ 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 

この1つは、メモリ内の最初のファイルをハッシュします。 巨大なであれば、あなたのメモリより多くのことを意味しますが、これはあなたのための解決策ではないかもしれません。

+0

「巨大な」という用語は正しい用語ではないかもしれません。それはメモリによって扱うことができます。私はそれが助けると思う。ありがとう! – Kay

関連する問題