繁体   English   中英

使用SED从“x = a1,y = b1,z = c1”类型的文件中提取标题和数据

[英]use SED to extract header and data from “x=a1, y=b1, z=c1” type of files

数据文件如下所示:

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

显然最后一项与“[,$]”不匹配任何建议?

非常感谢!

[,$]匹配逗号或美元,而不是逗号或行尾。

在第一行执行两个操作可能最简单:

sed -e '1{ s/=[^,]*,//g; s/=.*//; }' ...

第一个查找等号和第一个逗号(包括分隔符)之间的所有内容并重复删除它; 第二个查找最后一个(仅)等号后的所有内容并删除它。

sed -i 's/[^=]*=\([^,]*\)/\1 /g'

应该能够将所有数据都以这种格式获取

a1  b1  c1
a2  b2  c2
... 

之后,您可以插入您选择的标题

sed -i 1i"header"

如果你想要,你也可以使用Jonathan Leffler的答案中的sed解析文件中的标题。

要将文件解析为CSV,

 s/=[^,]*//g

 s/[^,]*=//g

分别给出标题和数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM