아래와 같이 Ubuntu 플랫폼이 설치된 Windows-10 시스템이 있습니다 uname -a
.
Linux DOMINIQUEDS 4.4.0-43-Microsoft #1-Microsoft Wed Dec 31 14:42:53 PST 2014 x86_64 x86_64 x86_64 GNU/Linux
많은 항목이 포함된 파일이 있습니다. 예를 들면 다음과 같습니다.
18bd6344 mfc110u!CPtrArray Size:[1046]
18bd63f4 mfc110u!CPtrArray Size:[1046]
18bd64a4 mfc110u!CPtrArray Size:[1046]
18bdcef4 mfc110u!CPtrArray Size:[4]
18bdcfa4 mfc110u!CPtrArray Size:[8]
18bdd054 mfc110u!CPtrArray Size:[49]
18bdd104 mfc110u!CPtrArray Size:[498]
18bdd1b4 mfc110u!CPtrArray Size:[498]
언급된 크기는 1부터 수백만까지입니다. 저는 더 큰 크기, 예를 들어 최소한 세 자리 숫자가 포함된 크기에 관심이 있습니다.
다음 정규식을 사용하여 이 작업을 수행할 수 있습니다.
grep "Size:\[[0-9][0-9][0-9]" Log1.log // this is working fine
다음 정규식은 동일한 결과를 제공할 것으로 예상합니다.
grep "Size:\[[0-9]{3,}" Log1.log
하지만 나는 아무것도 얻지 못했습니다.
방금 확인해보니 man grep
설명은 다음과 같습니다.
...
반복
...
{n,} 이전 항목을 n회 이상 일치합니다.
그렇다면 왜 이것이 작동하지 않습니까?
답변1
Ubuntu에 있으므로 GNU grep이 있는 것 같습니다. 이것매뉴얼 페이지또한 다음과 같이 말했습니다.
grep은 정규식 구문의 세 가지 다른 버전인 "기본"(BRE), "확장"(ERE) 및 "perl"(PCRE)을 이해합니다. GNU grep에서는 기본 구문과 확장 구문 간에 사용 가능한 기능에 차이가 없습니다. 다른 구현에서는 기본 정규 표현식이 덜 강력합니다. 다음 설명은 확장 정규식에 적용됩니다.;기본 정규 표현식의 차이점이 요약되어 있습니다.
그런 다음:
기본 정규식과 확장 정규식
기본 정규 표현식에서는 메타 문자?
,+
, , 및 가 특별한 의미를 잃습니다. 대신 백슬래시 버전 , , , , 및 가{
사용 됩니다 .|
(
)
\?
\+
\{
\|
\(
\)
\{3,\}
따라서 해당 플래그를 사용하거나 사용하여 -E
ERE를 활성화 해야 합니다 . 나는 후자를 추천한다. 백슬래시는 어디에서나 아주 빨리 보기 흉해질 수 있기 때문이다.