Regex 使用SED从“x=a1,y=b1,z=c1”类型的文件中提取标题和数据
数据文件如下所示:Regex 使用SED从“x=a1,y=b1,z=c1”类型的文件中提取标题和数据,regex,sed,Regex,Sed,数据文件如下所示: 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不包含=或 使用 给我 x y z=c1 显然最后一项与[,$]不匹配,有什么建议吗 非常感谢 Dong该[,$]匹配逗号或美元,而不是逗号或行尾 在第一行执行两个操作可能是最简单的: sed -e '1{ s/=[^,]*,//g; s/=.*//; }' ..
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不包含=或
使用
给我
x y z=c1
显然最后一项与[,$]不匹配,有什么建议吗
非常感谢
Dong该[,$]匹配逗号或美元,而不是逗号或行尾
在第一行执行两个操作可能是最简单的:
sed -e '1{ s/=[^,]*,//g; s/=.*//; }' ...
第一个查找等号和第一个逗号之间的所有内容,包括分隔符,并重复删除它;第二个查找最后一个等号之后的所有内容并删除该等号。[,$]匹配逗号或美元,而不是逗号或行尾
sed -i 's/[^=]*=\([^,]*\)/\1 /g'
在第一行执行两个操作可能是最简单的:
sed -e '1{ s/=[^,]*,//g; s/=.*//; }' ...
第一个查找等号和第一个逗号之间的所有内容,包括分隔符,并重复删除它;第二个查找最后一个等号之后的所有内容,并删除该等号
sed -i 's/[^=]*=\([^,]*\)/\1 /g'
应该能够将所有数据转换成这种格式
a1 b1 c1
a2 b2 c2
...
之后,您可以使用插入您选择的标题
sed -i 1i"header"
如果需要,还可以使用Jonathan Leffler答案中的sed解析文件头
应该能够将所有数据转换成这种格式
a1 b1 c1
a2 b2 c2
...
之后,您可以使用插入您选择的标题
sed -i 1i"header"
如果需要,还可以使用Jonathan Leffler答案中的sed解析文件头 要将文件解析为CSV
s/=[^,]*//g
s/[^,]*=//g
分别给出标题和数据。要将文件解析为CSV
s/=[^,]*//g
s/[^,]*=//g
分别给出标题和数据。Jonathan,非常好!你也解释得很清楚,非常感谢一个新手。是的,我的问题是[逗号,行尾]匹配。一个相关的问题是,你如何去掉=a1并保留逗号,这样结果将是一个CSV文件?在StackOverflow和相关网站上表示感谢的标准方式是向上投票或接受答案,或者两者都查看。您可以通过单击答案旁边的向上箭头向上投票;您可以通过单击某个问题答案旁边的勾号复选标记来接受。请注意,当您接受其他人的答案时,您的声誉会得到一点提升。当前为空的替换字符串应更改为逗号,以获得类似CSV的输出。Jonathan,非常好!你也解释得很清楚,非常感谢一个新手。是的,我的问题是[逗号,行尾]匹配。一个相关的问题是,你如何去掉=a1并保留逗号,这样结果将是一个CSV文件?在StackOverflow和相关网站上表示感谢的标准方式是向上投票或接受答案,或者两者都查看。您可以通过单击答案旁边的向上箭头向上投票;您可以通过单击某个问题答案旁边的勾号复选标记来接受。请注意,当您接受其他人的回答时,您的声誉会得到一点提升。当前为空的替换字符串应更改为逗号,以获得类似CSV的输出。sed-e的/[^=]*\[^,]*\/\1/g'gives=a1=b1=c1sed-e的/[^=]*\[^,]*\/\1/g'gives=a1=b1=c1