从脚本中提取电子邮件ID

时间:2011-12-29 08:45:52

标签: linux shell sed awk sh

使用此shell脚本作为源来提取邮件ID字段。需要单独提取邮件ID。例如需要采取 anupam.panda@btx.com ajay.k.singh@btx.com 请指教。

#!/bin/ksh
#exit 0
export nodename=`uname -n`
export SENDER_ID=BTFON.$nodename@btx.com
mailx -s "ERROR: OWB loading for ${FILE_NAME} has failed " anupam.panda@btx.com,ajay.k.singh@btx.com <<EOF

4 个答案:

答案 0 :(得分:1)

如果要扫描的目录(递归)是MYDIR,那么:

grep -hrioI '[a-z0-9_\.]\+@[a-z0-9]\+\.[a-z0-9\.]\{2,\}' MYDIR 2>/dev/null | sort -u

如果您只想扫描shell脚本,请添加--include = * .sh option:

grep -hrioI --include=*.sh '[a-z0-9_\.]\+@[a-z0-9]\+\.[a-z0-9\.]\{2,\}' MYDIR 2>/dev/null | sort -u

编辑我已将TLD的模式更改为至少2个符号({2,}而不是+)。

答案 1 :(得分:0)

awk -v FS="[\",<]" '/mailx/{for(i=3;i<NF;i++) print $i}' file

如果您的文件具有相似的格式,并且您希望提取所有跟随主题行的电子邮件,直到&lt;

要捕获sender_id,请执行以下操作 -

awk -v FS="[\",<$]" '
/mailx/{print "RECEPIENTS: ";for(i=4;i<NF;i++) print $i;next}
/SENDER_ID/{print "SENDER INFO: \n"$NF}' file

<强>测试

[jaypal:~/Temp] awk -v FS="[\",<$]" '
/mailx/{print "RECEPIENTS: ";for(i=4;i<NF;i++) print $i;next}
/SENDER_ID/{print "SENDER INFO: \n"$NF}' file
SENDER INFO: 
nodename@btx.com
RECEPIENTS: 
 anupam.panda@btx.com
ajay.k.singh@btx.com 

答案 2 :(得分:0)

尝试:

代码:

awk -F\" '
    /^mailx/{
        n=split(substr($3,2,length($3)-6),emails,/,/)
        for (i=1;i<=n;i++)print emails[i]}
    ' f3

输出:

anupam.panda@btx.com
ajay.k.singh@btx.com

答案 3 :(得分:0)

这可能对您有用:

sed '/^mailx/!d;s/.*"\s*\|\s*\S*$//g;y/,/\n/' file1 file2 file3 ...
anupam.panda@btx.com
ajay.k.singh@btx.com