2

我有一个以逗号分隔的电子邮件地址列表,每个实际地址都以联系人姓名(来自 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 邀请中,该邀请只能接受电子邮件地址。

删除除 Vim 中的正则表达式匹配之外的所有内容是相关的,但在这种情况下,所有电子邮件地址都在一行上。

4

3 回答 3

4

你有没有尝试过?

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

以下也将起作用:

:s/.*/\=join(map(split(submatch(0), ','), "matchstr(v:val, '<\\zs.*\\ze>')"), ', ')
于 2011-09-16T15:16:34.060 回答
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
于 2011-09-16T15:15:24.060 回答
-2

你能不能把它放到Excel中,然后用逗号分割数据,然后再做一个查找和替换来去掉尖括号

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

于 2011-09-16T15:17:55.910 回答