文字列を照合できないのはなぜですか
"1234567-1234567890"
指定された正規表現で
\d{7}-\d{10}
次のようなegrep
シェルから:
egrep \d{7}-\d{10} file
?
文字列を照合できないのはなぜですか
"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
vsegrep
と他の正規表現フレーバーの違いを一覧表示します完全を期すために:
実際、Egrep は文字クラスをサポートしています。クラスは次のとおりです。
例 (二重括弧に注意してください):
egrep '[[:digit:]]{7}-[[:digit:]]{10}' file
\d
「perl regex」オプションを grep に渡すと、次のように使用できます。
grep -P "\d{9}"
\d の代わりに [0-9] を使用します。egrep は \d を知りません。
これを試してください:
egrep '(\d{7}-\d{10})' file