2011-12-21 2 views
1

일치하려는 IP 주소, 예 : 192.168.1.1가 있습니다.Grep 관련 IP 주소

은 내가 afilegrep "192.168.1.1" afile 제 1 및 제 2 라인 모두 내가 원하는 바가 아니다, 일치하는 경우이

item1, item2, 192.168.1.1 
item3, item4, 192.168.1.10 
item5, item6, 192.168.2.1 

과 같은 afile라는 파일이 있습니다.

모든 IP 주소와 일치하는 많은 정규식을 알고 있지만 특정 IP 주소와 일치하는 정규 표현식을 알지 못합니다.

감사의 말을 전합니다.

IP 주소가 회선 끝에 없으면 어떻게됩니까? 예를 들어, 열 2와 3이 예제 파일에서 바뀌면 어떻게 될까요?

답변

5

당신은 그 줄의 끝과 일치하도록, 정규식의 마지막에 $를 추가해야합니다. 또한 점을 이스케이프하는 것이 좋습니다. .은 정규식에서 "모든 문자와 일치"를 의미합니다. 그래서 정규식 될 것이다 :

grep "192\.168\.1\.1$" afile 
+0

처음 대답 한 것처럼 보입니다. – devin

1

마지막 줄 끝에서 줄 끝과 일치시키려는 경우. 이 시도 :

grep "192.168.1.1$" 
1

grep는 "다시"정규 표현식입니다 g/re/p의 축약 버전입니다. RegEx에서 마침표는 "임의의 문자"를 의미합니다. 리터럴 기간으로 만들려면 백 슬래시로 이스케이프 처리하십시오.

grep "192\.168\.1\.1$" afile 

다른 사람들이 말했듯이, 당신은 또한 라인을 끝내라고 말 할 필요가 있습니다.

+0

표현식이 따옴표로 묶여 있기 때문에 마침표를 이스케이프 할 필요가 없습니다. ''192.168.1.1 "은'192 \ .168 \ .1 \ .1' – devin

+1

@devin과 마찬가지로 작동합니다. 확실히 확인했습니다. 만약 당신이 그들을 벗어나지 않는다면 당신의 패턴은 * "item1, item2, ** 192T168Q1] 1 **"*, 따옴표 또는 일치하지 않을 것입니다. – FakeRainBrigand