your programing

패턴 일치 숫자가 egrep에서 작동하지 않습니까?

lovepro 2020. 12. 29. 08:05
반응형

패턴 일치 숫자가 egrep에서 작동하지 않습니까?


문자열을 일치시킬 수없는 이유

"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

또한보십시오

참고 문헌


완전성을 위해 :

Egrep은 실제로 문자 클래스를 지원합니다. 수업은 다음과 같습니다.

  • [: alnum :]
  • [: 알파 :]
  • [: cntrl :]
  • [:숫자:]
  • [:그래프:]
  • [:보다 낮은:]
  • [:인쇄:]
  • [: punct :]
  • [:우주:]
  • [:높은:]
  • [: x 자리 :]

예 (이중 대괄호 참고) :

egrep '[[:digit:]]{7}-[[:digit:]]{10}' file

\dgrep에 "perl regex"옵션을 전달하면 사용할 수 있습니다 . 예 :

grep -P "\d{9}"


\ d 대신 [0-9]를 사용하십시오. egrep은 \ d를 모릅니다.


이걸로 해봐:

egrep '(\d{7}-\d{10})' file

참조 URL : https://stackoverflow.com/questions/3185457/pattern-matching-digits-does-not-work-in-egrep

반응형