我有一个以逗号分隔的电子邮件地址列表,其中每个实际地址都以联系人姓名(来自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是相关的,但在这种情况下,所有电子邮件地址都在一行。
答案 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个千位地址