的元素結合一些文本行,我有一些文件:紅寶石
file1.txt
[some] "one"
[like] "two"
file2.txt
[some] "test"
[like] "info"
,等等。
我需要他們通過平等[] -elements在每個文件結合:
file_output.txt
[some] "one" "test"
[like] "two" "info"
我怎樣才能做到這一點使用Ruby?
的元素結合一些文本行,我有一些文件:紅寶石
file1.txt
[some] "one"
[like] "two"
file2.txt
[some] "test"
[like] "info"
,等等。
我需要他們通過平等[] -elements在每個文件結合:
file_output.txt
[some] "one" "test"
[like] "two" "info"
我怎樣才能做到這一點使用Ruby?
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")
)
它工作正常,謝謝。 – coldmind 2013-05-13 06:42:59
["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))}
在不現在用正則表達式,如果你還需要一個 – Senjai 2013-05-12 21:43:51