除去'<'之间的字符以外的所有内容&安培; '>,'在Vim中 - 从Gmail“收件人”字段中提取电子邮件地址

时间:2011-09-16 15:07:06

标签: vim text-extraction email-address

我有一个以逗号分隔的电子邮件地址列表,其中每个实际地址都以联系人姓名(来自Gmail)为前缀。这是一个例子:

Fred Flintstone <fred@flintstone.org>, Wilma Flintstone <wilma@flintstone.org>, Barney Rubble <barney@rubble.org>, Bamm-Bamm Rubble <bammbamm@rubble.org>,

转换为:

fred@flintstone.org, wilma@flintstone.org, barney@rubble.org, bammbamm@rubble.org,

背景信息:我正在尝试将联系人列表粘贴到webex邀请中,该邀请只能接受电子邮件地址。

Remove everything except regex match in Vim是相关的,但在这种情况下,所有电子邮件地址都在一行。

3 个答案:

答案 0 :(得分:4)

你试过吗?

:s/.\{-}\%(\(,\s*\)\|<\(.\{-}\)>\)/\1\2/g

以下内容也适用:

:s/.*/\=join(map(split(submatch(0), ','), "matchstr(v:val, '<\\zs.*\\ze>')"), ', ')

答案 1 :(得分:2)

使用awk

    echo "Fred Flintstone <fred@flintstone.org>, Wilma Flintstone <wilma@flintstone.org>, Barney Rubble <barney@rubble.org>, Bamm-Bamm Rubble <bammbamm@rubble.org>
"|awk -F'<|>' '{for (i=1;i<=NF;i++)printf (i%2==0)?$i",":""}'

或在VIM中

:%s/,/\r/g
:%s/.*<\(.*\)>/\1/g

答案 2 :(得分:-2)

你能不把它放到Excel中, 然后将数据拆分为逗号然后 然后做一个查找和替换以摆脱天使支架

除非您使用某些代码来执行此操作,否则这将是最简单的 除非你有100,000个千位地址