7자리와 5자리를 추출하는 로그 파일이 있습니다.
grep -ao '[0-9][ ]\{7\}' /var/log/Bridge.log.1 | sort | uniq -c
이것은 작동하고 내 7자리 숫자를 추출합니다. 이것을 사용하면 5자리와 7자리가 혼합됩니다.
grep -ao '[0-9][ ]\{5\}' /var/log/Bridge.log.1 | sort | uniq -c
문제는 5자리 검색어 끝에 공백을 추가하는 방법입니다.
답변1
[0-9][ ]\{7\}
숫자 뒤에 7개의 공백이 오는 것과 일치합니다(GNU 사용 grep
).
아마도 당신이 원하는 것은 다음과 같습니다
grep -o -w -E '[0-9]{7}'
이렇게 하면 -w
완전한 "단어"만 얻을 수 있습니다. 즉, 단어가 아닌 하위 문자열과 일치합니다. -E
확장 정규식을 활성화합니다 (필수 {7}
. \{7\}
기본 정규식에 사용하는 것은 계속 사용할 수도 있고 사용하지 않을 수도 있는 GNU 전용 확장입니다).
-w
동등한 것을 사용하십시오
grep -o -E '\<[0-9]{7}\>'
where \<
및 \>
는 찾고 있는 "단어" 주위의 너비가 0인 단어 경계와 일치합니다.