[问题] 请问一个sed处理文字档的的写法

楼主: a02a02 (a02)   2017-08-21 17:02:33
请问一个问题,我有一个文字档0.txt如下:
123,"123,123",789,876,
123,456,789,876,
123,456,789,123,"456,456",
111,222,333,444,555
请问我要如何使用sed指令,去掉双引号以及双引号里面的逗点,使档案变成如下的档案?
123,123123,789,876,
123,456,789,876,
123,456,789,123,456456,
111,222,333,444,555
谢谢大家。
我的写法如下,但是不对。
sed "/\"/,/\"/s/\,//" 0.txt
作者: Vett (Vett)   2017-08-21 18:41:00
做两次 先拿掉""里面的, 再拿掉"
作者: Tormentor   2017-08-21 20:56:00
sed 's/"\([0-9]*\),\([0-9]*\)"/\1\2/g' 0.txt
作者: rickieyang (Rickie Yang)   2017-08-22 09:24:00
"" 里只会有一个 , 还是有可能有多个?
作者: hijkxyzuw (i,j,k) ×(x,y,z)   2017-08-22 11:50:00
用 csv parser 吧,或 awk 好像有个选项可以读 csvjs: fileString.replace(/".*?"/g, (s) =>s.slice(1,-1).replace(/,/g, ''))perl -pe 's{".*?"}{ substr $& =~ s/,//g, 1, -1 }ge'或 perl -pe 's{".*?"}{ $& =~ s/[",]//g }ge'呃,上面二行第二个 regexp 要加 flag r
作者: flu (Crazy Rhythm)   2017-08-22 21:57:00
perl的话用Regexp::Common模组有现成的测试成对引号的函式尤其是引号内允许 \"之类的东西出现时 不用自己写额外测试
作者: jimfan (jimfan)   2017-08-22 22:06:00
Tormentor的方法好,奈何"里面多于一个,就不行
作者: OSDBNetwork (路人甲)   2017-08-23 22:31:00
s/"\([0-9]*\),\([0-9]*\),\([0-9]*\)"/\1\2\3/g
作者: rickieyang (Rickie Yang)   2017-08-24 00:53:00
楼上,你这样只有一个,的不会替换到吧
作者: OSDBNetwork (路人甲)   2017-08-24 11:02:00
作者: rickieyang (Rickie Yang)   2017-08-24 11:57:00
那三个,四个,....有人用 awk 刻了 csv parse https://goo.gl/aPo9ey改一下就可以用了 (把第一个 gsub 的 \\, 删掉)
作者: OSDBNetwork (路人甲)   2017-08-25 05:56:00
https://pastebin.com/J0q5t4wZ 多个逗点之sed版本

Links booklink

Contact Us: admin [ a t ] ucptt.com