2012-11-19 27 views
1

我有一個製表符分隔文件,其中前10列始終存在並保持在同一位置,但在第10列之後,列數可以更改。我想按原樣保留前10列,並將其餘列連接到由|分隔的一列中。讀取製表符分隔的文件並連接Ruby中的選擇列

下面是示例數據:

列:COL1 COL2 ...第10欄第col11 COL12 col13

值:1 2 ... 10 11 12 13

結果:

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

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

回答

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"] 
+0

謝謝蒂洛。它按預期工作。 – drftr08

+0

是否可以在同一個例子中將連接列轉換爲鍵值對? – drftr08

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 
相關問題