Awk 从文件中提取循环模式

Awk 从文件中提取循环模式,awk,sed,Awk,Sed,我有一张大约880行的清单。 示例行如下所示: attr1=sample,attr2=sample,attr3=sample,电子邮件=example@example.org电子邮件=example@example.orgattr3=sample,attr4=sample,attr5=sample,EMAIL=example@example.org,attr5=样本,attr6=样本,电子邮件=example@example.org 我只想提取电子邮件属性并删除其余属性。这对sed有用吗 非常感

我有一张大约880行的清单。 示例行如下所示:

attr1=sample,attr2=sample,attr3=sample,电子邮件=example@example.org电子邮件=example@example.orgattr3=sample,attr4=sample,attr5=sample,EMAIL=example@example.org,attr5=样本,attr6=样本,电子邮件=example@example.org

我只想提取电子邮件属性并删除其余属性。这对sed有用吗

非常感谢你和亲切的问候

使用GNU grep:

grep -Po 'attr[0-9]+=\K.*?(?=[,;]) file
输出:

sample sample sample sample sample sample sample sample 样品 样品 样品 样品 样品 样品 样品 样品
你已经试过什么了?你真的浏览了一些关于awk和sed的信息吗?是的。如果您需要更多帮助,请发布示例输入、预期输出以及您迄今为止所尝试的内容。@hek2gml:如果您要将示例行缩进为代码,您也必须删除突出显示。为什么电子邮件和
电子邮件段中的“attr3=”之间没有标点分隔符=example@example.orgattr3=样本
?这是一个打字错误,还是会是一个大问题(因为如果没有分隔符,就会有一个大问题)。同样,使用分号来分隔两个
电子邮件
属性,而在其他地方使用逗号来分隔属性,这有什么意义吗?嗨,赛勒斯,非常感谢你的回答。我已经用grep-Poi电子邮件:\K.*(?=;|$)尝试过了,效果几乎不错。问题是结果是相互掩盖的。电子邮件属性在开始时都在一行中,但使用此命令后,在单个条目后会有一个新行。例如:email1:a@b.c电邮1:a@b.c电邮1:a@b.c电邮2:b@b.c电邮2:b@b.c电邮2:b@b.c等等是否可以将输出设置为如下所示:email1:a@b.c,电邮1:a@b.c,电邮1:a@b.c新行email2:b@b.c,电邮2:b@b.c,电邮2:b@b.c? 谢谢你和亲切的问候!请将您想要的示例输入输出(来自您的问题)添加到您的问题中。