grep을 사용하여 IP 주소 얻기

grep을 사용하여 IP 주소 얻기

저는 정규식을 배우고 있으며 연습으로 IP 주소를 grep'ing하려고 시도했지만 결과가 없습니다. VSCode에서 시도했는데 작동했습니다. 누구든지 내가 어디로 잘못 가고 있는지 알려줄 수 있습니까?

echo 192.168.1.1 | grep -e '\d+\.\d+\.\d+\.\d+'

답변1

사용 grep -P:

-P, --perl-regexp         PATTERNS are Perl regular expressions

답변2

정규식은 실제로 IPv4 주소와 같은 항목을 구문 분석하는 데 사용되지 않습니다. 특정 수준의 정확도를 달성하기 위해 다음을 시도해 볼 수 있습니다.

숫자 자체를 일치시키는 경우 표현식은 \d+\.\d+\.\d+\.\d+점으로 구분된 4개의 숫자 집합과 일치합니다.\d

정규식을 기억하세요많이있다사용된 엔진에 따라 결과가 달라질 수 있습니다. 다른 답변에서 제안한 대로 사용하면 grep -P구문 분석 엔진이 변경됩니다.

존재하다IPv4 주소 일치 - O'Reilly's 정규식 매뉴얼몇 가지 예가 있습니다.

이는 IP 주소만 확인하지만 299.299.111.1많은 확인을 통과하지는 않습니다.

^(?:[0-9]{1,3}\.){3}[0-9]{1,3}$

페이지의 다른 예에서는 감지 범위를 유효한 IP 주소로 좁히고 긴 텍스트에서 정확한 추출을 위한 제안을 살펴보면 IPv4 주소가 정규식에 적합하지 않은 이유를 알 수 있습니다.

\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}↵
(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b

관련 정보