Bashでegrepを使用する

Bashでegrepを使用する

以下のコードではエラーが発生しますが、理由がわかりません。

[name@unix ~]$cat test123
123
456
789
1011
1213
[name@unix ~]$egrep ^[0-9]{1,3}$ test123
egrep: ^[0-9]3$: No such file or directory
[name@unix ~]$egrep ^[0-9]{3}$ test123
123
456
789
[name@unix ~]$

$ man egrepを実行すると、次のようになります。

{n}は前のエントリと正確にn回一致します。 {n、}は前のエントリとn回以上一致します。 {n、m}は前のエントリと最小n回一致しますが、m回以下です。

答え1

{1,3}あなたのシェルは次のように解釈されます支柱の拡張、結果grepとして

grep ^[0-9]1$ ^[0-9]3$ test123

したがって、^[0-9]3$追加のファイル名パラメータが必要です。シェルがこれらの拡張を実行しないようにするには、常に正規表現を引用する必要があります。

egrep '^[0-9]{1,3}$' test123

関連情報