[問題] csv每欄加上引號

看板Ruby作者 (愛吐桑)時間17年前 (2008/05/06 16:20), 編輯推噓1(107)
留言8則, 4人參與, 最新討論串1/1
有一筆資料是長這樣 cat input 95,1,997,瑞文氏圖形推理測驗,28,台灣區,XX,54,XXXXXXXXXXXXXXXXXXX,2008-1-1,1 我想以用一行指令就把每個欄位都加上雙引號,但是行首跟行尾要怎麼表示? ruby -pe 'gsub(/,/, "\",\"") ' < input > output cat output 95","1","997","瑞文氏圖形推理測驗","28","台灣區","XX","54","XXXXXXXXXXXXXXXXXXX","2008-1-1","1 感恩 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 163.17.173.193

05/06 16:30, , 1F
這樣可以嗎?gsub(/([^,]+)/, '"\1"')
05/06 16:30, 1F

05/06 16:46, , 2F
我大概知道為什麼了,因為utf8中文,輸出變亂碼
05/06 16:46, 2F

05/06 17:11, , 3F
我試是正常的,也可以 /([^,]+)/u 試試
05/06 17:11, 3F

05/06 17:32, , 4F
如果有一格是 empty 就不行了吧: 95,1,,,28,台灣 ....
05/06 17:32, 4F

05/06 17:49, , 5F
還是乾脆照原本的方式,前後補 " 就好了?
05/06 17:49, 5F

05/06 20:18, , 6F
我的真的不行 >< 不曉得為什麼,ruby -pe 'gsub...' 這樣?
05/06 20:18, 6F

05/06 20:20, , 7F
那就不要再傷腦筋這個好了,但還是很感謝版大,真是熱心
05/06 20:20, 7F

05/06 21:30, , 8F
試試 ruby -pe "gsub(/([^,\n]+)/, "\'\"\\1\"\'")"
05/06 21:30, 8F
文章代碼(AID): #1881JTS7 (Ruby)
文章代碼(AID): #1881JTS7 (Ruby)