我有一个17列的文件与逗号分隔符和双引号,如果有任何逗号可用的值。有一个例子下面的几列
Jim,State,123456,Region1,759358,Yes,District1,
"frank, jr",State,789123,"Region2,Dummy",12345,No,District2,
我试过这个密码
sed 's/[^,]*,//' file
我正在获取输出
State,123456,Region1,759358,Yes,District1,
jr",State,789123,"Region2,Dummy",12345,No,District2,
但我需要输出为
State,123456,Region1,759358,Yes,District1,
State,789123,"Region2,Dummy",12345,No,District2,
实际上,在删除第一列之后,我需要在表中加载这些值。所以逗号delimeter应该可以完美地工作,然后才能加载。我只能使用awk或sed来实现这一点。
5条答案
按热度按时间kpbwa7wx1#
这可能对你有用(GNU sed):
从行首删除任何双引号字段或任何非逗号字符,后跟逗号。
wnvonmuf2#
最好使用真实的的CSV解析器csvkit:
使用perl和
Text::CSV_XS
解析器:也可以使用miller
imported extra functions:
(需要
gawk
版本〉= 4.1.0)对于
gawk
,使用FPAT
:4jb9z9bj3#
你应该使用一种对CSV数据有强大支持的语言,比如Python。下面是一个简单的脚本:
这个脚本假定输入文件名为“data.csv”,并将输出写入“out.csv”
tkqqtvp14#
一个
awk
的想法:这产生:
gab6jxml5#
正如其他人所说,最简单的最佳选择是某种形式的CSV解析器。
下面是一个Ruby:
图纸: