LoginSignup
5
4

More than 5 years have passed since last update.

シェルでメールアドレスの形式をチェックする(正規表現)

Last updated at Posted at 2016-03-28

何故か結構苦戦してしまった。
やりたいことは下記設定ファイルを読み込んで、メールアドレス部分をチェックするというもの。

userlist.conf
user1 user1@test.co.jp
user2 user-2@test.co.jp
user3 user_3@test.co.jp

まずは失敗例

test.sh
#!/bin/bash
LIST=./userlist.conf
while read F1 F2
do
  if [ $(echo ${F2} | egrep -e '[-\w\d_]+\@[-\w\d_]+\.+[-\w\d_]+') ]; then
      echo "match!"
  else
      echo "no match!"
  fi
done < ${LIST}
exit 0

実行結果は"no match!"が表示されてうまくいかない...

いろんなところをめぐって、最終的に成功したものはこちら

test.sh
#!/bin/bash
LIST=./userlist.conf
while read F1 F2
do
  if [ $(echo ${F2} | egrep -e '^[a-zA-Z0-9_\.\-]+?@[A-Za-z0-9_\.\-]+$') ]; then
      echo "match!"
  else
      echo "no match!"
  fi
done < ${LIST}
exit 0

個人的にはうまくいかなかった箇所は@マークかな...とは思うのだが(@をつけると何故か失敗しだした)
成功したほうは大して変わりないように見える...(\w\dが問題だった?)

原因究明はおいおいということで

5
4
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4