こんにちは、私のスクリプトには次のawkがあります。正規表現パターンが正しく機能しません。 [az]、[0-9]、[.]、@文字を含めることができるEメールアドレスを確認したいと思います。
パスワード
here are the sample email patterns in the input file
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
スキーマはメタデータファイルから抽出され、スクリプトパラメータに渡されます。ここのメタデータ行は、電子メールIDを確認するためのスキーマを定義します。
1~4~~文字~Y~\"\@\.com\"~100
sh -x スクリプトコードの実行
val=$(
awk -F ,
-v n=4
-v 'm="*@*.com"'
-v count=0
'NR!=1 && $n !~ "^" m "$"
{
printf "%s:%s:%s\n", FILENAME, FNR, $0 > "/dev/stderr"
count++
}
END {print count}' BNC.csv
vi スクリプトコード
val=$(awk -F "$sep"
-v n="$col_pos"
-v m="$col_patt"
-v count=0
'NR!=1 && $n !~ "^" m "$"
{
printf "%s:%s:%s\n", FILENAME, FNR, $0 > "/dev/stderr"
count++
}
END {print count}' $input_file
ベストアンサー1
電子メールアドレスを確認する方法を探している場合は、FWIW、次はトリックを実行する古いawkスクリプトにあります。
# valid addrs regexp from http://www.regular-expressions.info/email.html
# Specifically do NOT want to use [:alpha:] to drop Asian characters etc
# Added a check that we have at least 2 consecutive alphabetic characters
# both before and after the "@" to get rid of [email protected] etc. garbage
(addr ~ /^[0-9a-zA-Z._%+-]+@[0-9a-zA-Z.-]+\.[a-zA-Z]{2,}$/) &&
(addr ~ /^.*[a-zA-Z]{2}.*@.*[a-zA-Z]{2}.*\.[a-zA-Z]{2,}$/)
私はそれを1つの正規表現にまとめることができると確信していますが、そうすることにはあまり興味がなく、最終的な結果は明確ではないかもしれません。