$ cat j4.csv
how, now, brown, cow, f1
now, is, the, time, f2
one, two, three, four, five
xhow, now, brown, cow, f1
xnow, is, the, time, f2
xone, two, three, four, five
$ cat j4a.csv
how, b
one, d
$ cat hj.rb
require 'pp'
require 'rubygems'
require 'fastercsv'
pp(
FasterCSV.read('j4a.csv').inject(
FasterCSV.read('j4.csv').inject({}) do |m, e|
m[e[0]] = e
m
end) do |m, e|
k = e[0]
m[k] << e.last if m[k]
m
end.values)
$ ruby hj.rb
[["now", " is", " the", " time", " f2"],
["xhow", " now", " brown", " cow", " f1"],
["xone", " two", " three", " four", " five"],
["how", " now", " brown", " cow", " f1", " b"],
["one", " two", " three", " four", " five", " d"],
["xnow", " is", " the", " time", " f2"]]
这通过将您的主文件映射到以第一列作为键的哈希值来工作,然后它只是从您的其他文件中查找键。正如所写的那样,当键匹配时,代码会附加最后一列。由于您有多个非主文件,您可以通过将 FasterCSV.read('j4a.csv') 替换为读取每个文件并将它们全部连接到单个数组数组中的方法来调整概念,或者您可以只保存内部 @ 的结果987654323@(主哈希)并循环应用其他文件。