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

관련 정보