2013-12-13 40 views
0

我有很多txt文件包含空格分隔的电子邮件,我想检查它里面是否有无效的电子邮件。检查多个txt文件中电子邮件的有效性

有了这个,我检查file.txt的是否为空:

for file in *.txt; do 
    email=(grep $file) 
    if [ -s "$file" ]; then 
     echo "OK $file" 
    else 
     echo "-- EMPTY $file" 

我的问题是,我需要用grep检查里面的文件的电子邮件的有效性?

elif 
     if [[ grep $file =~ "^[A-Za-z0-9._%+-][email protected][A-Za-z0-9.-]+\.[A-Za-z]{2,4}$" ]] 
    then 
     echo "Email address inside $file is valid." 
    else 
     echo "Email address inside $file contain $email is invalid." 
    fi 
done 
+0

文本文件中是否有换行符('\ n')或每个电子邮件之间只有空格? – 2013-12-13 10:56:25

+0

@HermanTorjussen只有空格 – pasaico

回答

1

根据您的使用情况下,我可能会使用这样的顺序:

  1. grep的所有有效的电子邮件地址,并将其存储在新的文本文件。
  2. 使用差异比较原始文件来查看无效的电子邮件地址(如果需要)。

为了您的正则表达式我会改变使用单词边界:

来源:^[A-Za-z0-9._%+-][email protected][A-Za-z0-9.-]+\.[A-Za-z]{2,4}$

要: \b[A-Za-z0-9._%+-][email protected][A-Za-z0-9.-]+\.[A-Za-z]{2,4}\b

那么,你是不匹配整行。

相关问题