数据文件如下:
x=a1, y=b1, z=c1
x=a2, y=b2, z=c2
...
我想将其解析为更有用的格式:
x y z
a1 b1 c1
a2 b2 c2
...
标题“x,y,z”和数据“a,b,c”不包含“=”或“,”。
使用
1 s/=*[^=]*[,$]/ /g
给我
x y z=c1
显然最后一项不符合“[,$]”任何建议?
非常感谢!
冬
答案 0 :(得分:2)
[,$]
匹配逗号或美元,而不是逗号或行尾。
在第一行执行两项操作可能最简单:
sed -e '1{ s/=[^,]*,//g; s/=.*//; }' ...
第一个查找等号和第一个逗号(包括分隔符)之间的所有内容并重复删除它;第二个查找最后一个(仅)等号后的所有内容并删除它。
答案 1 :(得分:2)
sed -i 's/[^=]*=\([^,]*\)/\1 /g'
应该能够将所有数据都格式化为
a1 b1 c1
a2 b2 c2
...
之后,您可以使用
插入您选择的标题sed -i 1i"header"
如果你想要,你也可以使用Jonathan Leffler的答案中的sed解析文件中的标题。
答案 2 :(得分:0)
要将文件解析为CSV,
s/=[^,]*//g
s/[^,]*=//g
分别给出标题和数据。