提取邮件地址

提取邮件地址

我有一个包含这样的行的文件:

user=<[email protected]>,
user=<[email protected]>,
user=<[email protected]>,
user=<[email protected]>,
user=<[email protected]>,
user=<[email protected]>,

从此文件中提取邮件地址的最佳方法是什么?

答案1

您可以awk按照其他答案中给出的方式使用。

您可以使用sedperl类似ruby的:例如

perl -wlne '/<(.*)>/ and print $1' file

bash按照要求使用,也是可能的。

第一步。只需逐行输出文件:

while read line; do echo $line; done <file

下一步删除不需要的前缀和后缀:

while read line; do line=${line##user=<}; line=${line%%>,}; echo $line; done <file

同样的更通用和更短:

while read line; do line=${line##*<}; echo ${line%%>*}; done <file

这适用于您的示例,也应该适用于其他 shell。

如果您只想在前面和最后删除几个字符,您可以使用:

while read line; do echo ${line:6:-2}; done <file

您可以阅读 bash ( ) 的详细手册页man bash以获取更多详细信息。

答案2

我确信可能有比这更好的方法,但我想不到
awk -F '<|>' '{ print $2 }' filename

答案3

如果坚持使用 bash,在较新的版本中:

外壳参数扩展:http://www.gnu.org/software/bash/manual/html_node/Shell-Parameter-Expansion.html
字符串长度:http://wiki.bash-hackers.org/syntax/pe#string_length
子串扩展:http://wiki.bash-hackers.org/syntax/pe#substring_expansion

#!/bin/bash

while read line; do
    len=$((${#line}-8))
    echo ${line:6:$len}
done < file

相关内容