なぜ文字列を一致させることができません
"1234567-1234567890"
与えられた正規表現で
\d{7}-\d{10}
シェルからのegrep
は次のようになります。
egrep \d{7}-\d{10} file
?
egrep
は\d
数字文字クラスの短縮形を認識しないため、たとえば[0-9]
。
さらに、この場合は絶対に必要というわけではありませんが、シェルによる誤解を防ぐために正規表現を引用するのは良い習慣です。したがって、次のようなものが機能するはずです。
egrep '[0-9]{7}-[0-9]{10}' file
grep
、ed
、sed
、egrep
、awk
、emacs
) のフレーバーノートgrep
対egrep
対他の正規表現フレーバーの違いをリストします完全を期すために:
実際、Egrepは文字クラスをサポートしています。クラスは次のとおりです。
例(二重括弧に注意):
egrep '[[:digit:]]{7}-[[:digit:]]{10}' file
grepに「Perl regex」オプションを渡す場合、\d
を使用できます。例:
grep -P "\d{9}"
\ dの代わりに[0-9]を使用します。 egrepは\ dを知りません。