Remove everything except characters between '<' & '>,' in Vim — extract email addresses from Gmail “To” field

 ̄綄美尐妖づ 提交于 2019-12-02 05:29:33

问题


I have a comma-delimited list of email addresses with each actual address prepended by the contact's name (from Gmail). Here's an example:

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

converts to:

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

Background info: I am trying to paste the list of contacts into a webex invite, which can only accept email addresses.

Remove everything except regex match in Vim is related, but all the email addresses are on one line in this case.


回答1:


Have you tried?

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

The following will also work:

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



回答2:


with 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",":""}'

or in VIM

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



回答3:


Could you not put it into Excel, then split the data on the comma and then and then do a find and replace to get rid of the angel bracket

Unless you are using some code to do it this would be the easiest unless you have 100,000's of thousand addresses



来源:https://stackoverflow.com/questions/7446716/remove-everything-except-characters-between-in-vim-extract-email-a

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!