0

私はいくつかのファイルを持っています:

file1.txt

[some] "one"

[like] "two"

file2.txt

[some] "test" 

[like] "info"

、等々。

各ファイルで等しい [] 要素でそれらを結合する必要があります。

file_output.txt

[some] "one" "test"

[like] "two" "info"

Rubyを使用してそれを行うにはどうすればよいですか?

4

2 に答える 2

0
["file1.txt", "file2.txt"]
.inject({}) do |h, f|
  File.read(f).scan(/^(\[.+?\])\s+(.*)/).each do |k, v|
     (h[k] ||= k).concat(" #{v}")
  end; h
end.values
.tap{|a| File.write("file_output.txt", a.join($/*2))}
于 2013-05-12T21:28:56.327 に答える
0
File.write('file_output.txt', 
  %w{file1.txt file2.txt}.
    flat_map { |f| File.readlines(f) }.
    map(&:strip).reject(&:empty?).
    map { |l| l.split(' ',2) }.
    group_by(&:first).
    map { |k,v| [k, *v.map(&:last)].join(' ') << "\n" }.
    join("\n")
)
于 2013-05-12T21:49:55.110 に答える