grep에서 정규식을 축약하려고 합니다. 정확히 6개의 공백과 알파벳 문자가 일치해야 합니다. 이것은 작동합니다:
grep "^\s\s\s\s\s\s[[:alpha:]]" <filename>
다음은 수행되지 않습니다.
grep "^[[:space:]]{6}[[:alpha:]]" <filename>
내가 뭘 잘못했나요?
답변1
{6}
기본 정규식에 영향을 주지 않는 확장된 정규식 "바인딩"입니다( {6}
문자 그대로 일치함). 이 grep
유틸리티는 기본적으로 기본 정규식을 사용합니다.
두 가지 솔루션:
- 반대의 경우를 사용하면
\{6\}
기본 정규 표현식으로 작성할 수 있습니다. - 을 사용
grep -E
하여 을 허용합니다grep
.
[[:space:]]
또는 공백(다른 문자 제외 , \s
GNU에서는 grep
공백, 세로/가로 탭, 양식 피드, 개행 및 캐리지 리턴)을 일치시키려면 리터럴 공백을 사용하십시오 . 예를 들어,
grep -E '^ {6}[[:alpha:]]'
관련된:
답변2
Kusalananda가 말한 것에 덧붙여, 이것은 깃발 egrep
을 다루고 싶지 않은 경우에 작동합니다.-E