2013-12-13 4 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') или только пробелы между каждым письмом? –

+0

@ HermanTorjussen только пробелы – pasaico

ответ

1

В зависимости от вашего использования случае я бы, вероятно, использовать последовательность вроде этого:

  1. Grep для всех действительных адресов электронной почты и сохранять их в новый текстовый файл.
  2. использовать diff для сравнения с исходным файлом для просмотра недопустимых адресов электронной почты (при необходимости).

Для вашего регулярного выражения Я хотел бы изменить, чтобы использовать границы слова:

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

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

Таким образом, вы не соответствующие целые строки.

Смежные вопросы