この巨大な電子メールデータセットを変更するには?

この巨大な電子メールデータセットを変更するには?

私は電子メールで構成する必要がある非常に大きなデータセットを持っています。ただし、ファイルから完全に削除する必要がある無効な電子メールがたくさんあります。

ここにいくつかの例があります。

89 is @msn .com
[email protected]
89%@yahoo.com
89%[email protected]
89&#39:[email protected]
89'[email protected]
89'[email protected]
89&[email protected]
89+475asdjkl:[email protected]
89+475asdjkl;[email protected]
[email protected]

ファイルから無効な電子メールを含む行を簡単に削除する方法はありますか?

ベストアンサー1

編集する:指摘したとおりツイート、スクリプトを書かなくてもgrepでこの正規表現を使用できます。

grep "^[a-z0-9!#\$%&'*+/=?^_\`{|}~-]+(\.[a-z0-9!#$%&'*+/=?^_\`{|}~-]+)*@([a-z0-9]([a-z0-9-]*[a-z0-9])?\.)+[a-z0-9]([a-z0-9-]*[a-z0-9])?\$" my_email_list.txt >> my_valid_emails.txt

簡単なスクリプトでこの問題を解決できます。上記のコメントのようにこんにちはそしてツイートをサイトに埋め込む、そのいくつかの例は完全に有効な電子メールアドレスです。

email_validate.sh:

#!/bin/bash

# email regex check
email_valid="^[a-z0-9!#\$%&'*+/=?^_\`{|}~-]+(\.[a-z0-9!#$%&'*+/=?^_\`{|}~-]+)*@([a-z0-9]([a-z0-9-]*[a-z0-9])?\.)+[a-z0-9]([a-z0-9-]*[a-z0-9])?\$"

# set field separator to new lines
IFS=$'\n' 
# for loop checking line against regex above
for line in $(cat my_email_list.txt); do
    if [[ $line =~ $email_valid ]]; then
        echo "$line is valid"
    else
        echo "$line is invalid"
    fi
done

出力例:

┌─[root@Fedora]─[~]─[03:27 pm]
└─[$]› ./email_validate.sh
89 is @msn .com is invalid
[email protected] is valid
89%@yahoo.com is valid
89%[email protected] is valid
89&#39:[email protected] is invalid
89'[email protected] is invalid
89'[email protected] is invalid
89&[email protected] is valid
89+475asdjkl:[email protected] is invalid
89+475asdjkl;[email protected] is invalid
[email protected] is valid

実行中のファイルからそのエントリを削除する必要がある場合は、sed '/$line/d'ifステートメントを追加するだけです。古いファイルを参照する必要がある場合に備えて、有効な電子メールを新しいファイルに移動することを個人的にお勧めします。

    if [[ $line =~ $email_valid ]]; then
        echo "$line is valid"
        echo "$line" >> my_valid_emails.txt
    else
        echo "$line is invalid - deleting"
    fi

これにより、次の内容が返されます。

┌─[root@Fedora]─[~]─[03:34 pm]
└─[$]› cat my_valid_emails.txt
[email protected]
89%@yahoo.com
89%[email protected]
89&[email protected]
[email protected]

おすすめ記事