亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
1234下一頁
最近訪問板塊 發(fā)新帖
查看: 30788 | 回復(fù): 30
打印 上一主題 下一主題

請教:csv文件中的雙引號和逗號處理 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2009-02-27 20:04 |只看該作者 |倒序瀏覽
萬能的cu shell版,給我個答案吧:
我有一個csv的文件要處理,格式如下吧:
1,"2009/01/05","name1","           6,301","    13,459,138"
2,"2009/02/05","name2","           6,302","    23,459,138"
最終要處理成:
1,2009/01/05,name1,6301,13459138
2,2009/02/05,name2,6302,23459138

也就是:
(1)如果雙引號中有逗號,去掉逗號
(2)去掉所有的雙引號,最終只使用逗號分隔

有時候第二列、第三列沒有雙引號的,有時候有
而第四列則是,如果中間有逗號,則有雙引號,沒有逗號,則沒有雙引號

我理解的csv格式是:
(1)列之間使用逗號分隔
(2)如果單列里的內(nèi)容有逗號,則用雙引號括起該列,以區(qū)別列分隔符的逗號

如何處理這種csv格式?請教各位大俠

論壇徽章:
0
2 [報告]
發(fā)表于 2009-02-27 20:10 |只看該作者
cat urfile | tr -d "\"\t "

  1. [rockfall@tmp]$cat b
  2. 1,"2009/01/05","name1","           6,301","    13,459,138"
  3. 2,"2009/02/05","name2","           6,302","    23,459,138"
  4. [rockfall@tmp]$cat b |tr -d "\"\t "
  5. 1,2009/01/05,name1,6,301,13,459,138
  6. 2,2009/02/05,name2,6,302,23,459,138
  7. [rockfall@tmp]$

復(fù)制代碼

論壇徽章:
0
3 [報告]
發(fā)表于 2009-02-27 20:13 |只看該作者

回復(fù) #2 haimming 的帖子

。。。。。。。。。。。。。。。。。。。
雙引號是去掉了,列分隔符也亂掉了

論壇徽章:
0
4 [報告]
發(fā)表于 2009-02-27 20:18 |只看該作者
忘記說了 其實我文件里實際的name是日文字符:フコリウ  之類的。
所以 sed 's/\(\"\)(a-zA-Z1-9,)*\(\"\)/\2/g' 之類的匹配雙引號中間的字符是不行的

[ 本帖最后由 voipexplore 于 2009-2-27 20:21 編輯 ]

論壇徽章:
0
5 [報告]
發(fā)表于 2009-02-27 20:32 |只看該作者

回復(fù) #3 voipexplore 的帖子

不好意,沒認真看,現(xiàn)在只想到了個很惡心的
sed -r 's/"([^",]*)"/\1/g;s/" *([^,]*),([^,]*)*"/\1\2/;s/" *([^,]*),([^,]*),([^,]*)"/\1\2\3/' urfile
如果格式只是這樣可能沒問題

論壇徽章:
0
6 [報告]
發(fā)表于 2009-02-27 21:06 |只看該作者
這個問題比較有意思,我只會這種笨辦法
sed -r 's/"([^"]+),([^"]+),([^"]*)"/\1\2\3/g;s/"([^"]+),([^"]*)"/\1\2/g;s/"([^"]*)"/\1/g;s/\s+//g'
不知道有沒有更好的解決辦法

論壇徽章:
23
15-16賽季CBA聯(lián)賽之吉林
日期:2017-12-21 16:39:27白羊座
日期:2014-10-27 11:14:37申猴
日期:2014-10-23 08:36:23金牛座
日期:2014-09-30 08:26:49午馬
日期:2014-09-29 09:40:16射手座
日期:2014-11-25 08:56:112015年辭舊歲徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:0315-16賽季CBA聯(lián)賽之山東
日期:2017-12-21 16:39:1915-16賽季CBA聯(lián)賽之廣東
日期:2016-01-19 13:33:372015亞冠之山東魯能
日期:2015-10-13 09:39:062015亞冠之西悉尼流浪者
日期:2015-09-21 08:27:57
7 [報告]
發(fā)表于 2009-02-27 21:12 |只看該作者

回復(fù) #1 voipexplore 的帖子

sed -r ':a;s/("[^"]+),([^"]+")/\1\2/g;ta;s/[" \t]//g' urfile

論壇徽章:
0
8 [報告]
發(fā)表于 2009-02-27 21:16 |只看該作者
sed 's/,//g;s/\s//g;s/\"\+/,/g;s/.$//' urfile
這個沒那么惡心了

  1. [rockfall@tmp]$sed 's/,//g;s/\s//g;s/\"\+/,/g;s/.$//' urfile
  2. 1,2009/01/05,name1,6301,13459138
  3. 2,2009/02/05,name2,6302,23459138

復(fù)制代碼

論壇徽章:
0
9 [報告]
發(fā)表于 2009-02-27 21:18 |只看該作者
@ly5066113

謝謝 完全正確啊 多謝

也謝謝haimming  justlooks,不過有結(jié)果不對,可能是中間有日文的原因吧,結(jié)果沒再深究。

論壇徽章:
0
10 [報告]
發(fā)表于 2009-02-27 21:20 |只看該作者
@haimming
多謝 你最后的也是正確的
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP