回答編集履歴
1
内容修正
answer
CHANGED
@@ -1,21 +1,22 @@
|
|
1
1
|
splitせずに比較でいかがでしょうか。
|
2
2
|
|
3
|
+
追記:
|
4
|
+
入力をタブ区切りに、出力をCSV形式にしました。
|
3
5
|
```Ruby
|
4
|
-
|
6
|
+
data = File.open("sample.bl6").readlines.map{|v| v.chomp.split("\t")}
|
5
|
-
=> [["1|abc2|1", "1", "2"], ["1|abc2|3", "2", "3"], ["1|abc2|2", "3", "3"], ["1|abc1|1", "4", "4"], ["1|abc1|2", "5", "2"], ["2|abd1|2", "7
|
6
|
-
, "5"], ["2|abd1|1", "3", "3"], ["3|acd2|1", "4", "2"]]
|
7
|
-
|
7
|
+
data.sort!{|a, b| a[0] <=> b[0]}
|
8
|
-
|
8
|
+
|
9
|
-
, "3"], ["2|abd1|2", "7", "5"], ["3|acd2|1", "4", "2"]]
|
10
|
-
irb(main):003:0> require 'pp'
|
11
|
-
|
9
|
+
# CSVクラスを使わず
|
12
|
-
irb(main):004:0> pp data.sort{|a, b| a[0] <=> b[0]}
|
13
|
-
|
10
|
+
File.open("result.csv", "w") do |fh|
|
11
|
+
data.each do |line|
|
12
|
+
fh.puts line.join(",")
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
# CSVクラス使って。どちらでもお好きな方で。
|
14
|
-
|
17
|
+
CSV.open("result.csv","w") do |fh|
|
18
|
+
data.each do |line|
|
15
|
-
|
19
|
+
fh << line
|
16
|
-
["1|abc2|2", "3", "3"],
|
17
|
-
["1|abc2|3", "2", "3"],
|
18
|
-
|
20
|
+
end
|
19
|
-
|
21
|
+
end
|
20
|
-
["3|acd2|1", "4", "2"]]
|
21
22
|
```
|