거대한 패킷 캡처 파일에서 알 수 없는 11개의 문자 시퀀스를 찾으려고 합니다. 내가 아는 한 가지는 내가 찾고 있는 문자열의 형식이 이라는 것입니다 x.x-xxxxxxx
. 한동안 검색했지만 이 작업을 수행하는 데 필요한 올바른 grep 문을 찾을 수 없습니다. 누구든지 도와줄 수 있습니까?
답변1
형식은 grep
"POSIX 정규식"(조회)이라고 부르는 것으로, 몇 가지 간단한 일치 기본 형식을 지원합니다. 영숫자 문자만 필요하다는 것을 알고 있다면 다음과 같은 문자 클래스를 사용할 수 있습니다 [a-zA-Z0-9]
. grep
이 특정 클래스에 대한 바로가기(매우 유용하기 때문에)도 있습니다. 다음과 같습니다 [[:alnum:]]
. man grep
관련된 정보가 많이 있습니다.
반복 횟수를 사용하여 일치시킬 문자 수를 지정할 수도 있습니다. 귀하의 경우에는 영숫자 1개, 마침표, 문자, 대시, 7개의 문자를 일치시키려고 합니다. POSIX 정규식에서는 다음과 같습니다.
[[:alnum:]]\.[[:alnum:]]-[[:alnum:]]{7}
노트:
- 백슬래시를 사용하여 마침표를 이스케이프해야 합니다. 그렇지 않으면 "모든 문자 잡기" 정규식으로 구문 분석됩니다.
-e
반복 절(중괄호)이 작동 하려면egrep
표준grep
.
따라서 전체 명령은 다음과 같습니다.
egrep '[[:alnum:]]\.[[:alnum:]]-[[:alnum:]]{7}' /some/file
출력은 이 표현식과 일치하는 행이 되며, 색상으로 강조 표시될 수도 있습니다(터미널에 따라 다름). 패킷 파일이 줄로 구분되지 않은 경우(아마도 바이너리) 화면에 많은 혼란이 있을 것입니다.