Regex 检查多个txt文件中电子邮件的有效性

Regex 检查多个txt文件中电子邮件的有效性,regex,list,file,email,Regex,List,File,Email,我有很多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 [

我有很多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._%+-]+@[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

根据您的用例,我可能会使用如下顺序:

  • grep所有有效的电子邮件地址,并将其存储在新的文本文件中
  • 使用diff与原始文件进行比较,以查看无效的电子邮件地址(如果需要)
  • 对于您的正则表达式,我将更改为使用单词边界:

    发件人:
    ^[A-Za-z0-9.\uz%+-]+@[A-Za-z0-9.-]+\[A-Za-z]{2,4}$

    致:
    \b[A-Za-z0-9.\uz%+-]+@[A-Za-z0-9.-]+\[A-Za-z]{2,4}\b


    因此,您没有匹配整行。

    文本文件中是否有换行符(
    \n
    )或每个电子邮件之间是否只有空格?@HermanTorjussen only spaces