1

最初の 10 列が常に存在し、同じ位置にあるタブ区切りファイルがありますが、10 列目以降は列数が変わる可能性があります。最初の 10 列をそのまま保持し、残りの列を で区切られた 1 つの列に連結したいと考えています|

サンプルデータは次のとおりです。

列: col1 col2 ... col 10 col11 col12 col13

値: 1 2 ... 10 11 12 13

結果:

列: col1 col2 ... col10 col11|col12|col13

値: 1 2 ... 10 11 | 12 | 13

4

2 に答える 2

2

rubyのsplitメソッドを見てください-それはオプションのlimitパラメーターを取ります。rowデータが各行の変数にあると仮定します。

values = row.split("\t", 11)

例(簡潔にするために、可変部分は列3から始まります):

s = "1\t2\t3\t4" 
cols = s.split("\t", 3) 
# result: ["1", "2", "3\t4"] 

次に、最後の要素を変更できます。

cols[2] = cols.last.gsub("\t", "|")
# cols is now: ["1", "2", "3|4"] 
于 2012-11-19T23:22:35.357 に答える
2

次のようなものから始めることができます

IO.foreach('path/to/file') do |line|
  splits = line.split("\t")

  col1, col2, col3, col4, col5, col6, col7, col8, col9, col10 = splits


  col11 = splits[10..-1].join('|')
end
于 2012-11-19T23:05:15.070 に答える