정규 표현식은 길이에 따라 다릅니다.

정규 표현식은 길이에 따라 다릅니다.

길이가 5 더하기 2의 배수인 줄만 허용하는 정규식입니다. 예: 7, 12, 32 등 아는 사람 있나요?

답변1

정말로 정규 표현식을 사용하고 싶다면 "^..(.{5})+$"를 확장 정규 표현식으로 해석하면 됩니다. 예를 들어 다음과 같이 사용할 수 있습니다 grep -E.

for i in {1..20}; do printf "%.${i}s\n" --------------------; done | grep -E '^..(.{5})+$'

이는 기본 정규식 "^..(.{5})+$"로 다시 작성할 수 있습니다.

두 표현식 모두 일치하는 텍스트의 시작과 끝 부분에 고정되어 있으므로 전체 줄과 일치합니다. ".."는 임의의 두 문자와 일치하고, "(.{5})"는 임의의 다섯 문자와 일치하며, "+"는 최소한 마지막 일치를 반복합니다. 따라서 각 줄에 포함된 문자 수가 5×인지 확인합니다.N+2N > 0.

또는 다른 도구를 사용하여 줄 길이를 매우 빠르게 확인할 수 있습니다.

... | awk 'length > 5 && length % 5 == 2'

관련 정보