고양이 파일에는 다음이 포함되어 있습니다.
inet addr:192.168.154.102 Bcast:192.168.154.255 Mask:255.255.255.0
inet addr:127.0.0.1 Mask:255.0.0.0
나는 다음과 같이 ipaddress ( 192.168.154.102
및 127.0.0.1
)를 추출하기 위해 sed를 사용하고 있습니다.
sed -ne 's/.*\([0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\).*/\1/p'
하지만 그것은 단지 다음을 제공합니다:
5.255.255.0
5.0.0.0
답변1
사용 awk
:
$ echo "inet addr:192.168.154.102 Bcast:192.168.154.255 Mask:255.255.255.0" | awk '{ split($2, a, ":"); print a[2] }'
192.168.154.102
반드시 사용해야 하는 경우 sed
예를 들면 다음과 같습니다.
echo "inet addr:192.168.154.102 Bcast:192.168.154.255 Mask:255.255.255.0" | sed 's#.*addr:\([0-9.]*\).*#\1#g'
192.168.154.102
답변2
문제는별표정규 표현식은 최대한 탐욕스럽고 최대한 빨리 일치하기 때문입니다. 이것은 단순히 의미합니다".*"첫 번째 줄의 "거의 모든 것"과 일치합니다.
inet addr:192.168.154.102 Bcast:192.168.154.255 Mask:2
두 번째에는
inet addr:127.0.0.1 Mask:25
그래서 나머지와 당신이 얻는 것을 인쇄합니다.
귀하의 경우에는 다음과 같이 좀 더 구체적으로 설명하려고 합니다.":"구분 기호나 접두사로 사용하세요."주소:"또는 모든 문자를 제거할 수 있지만 제거할 수는 없습니다.가리키다그리고숫자IPv4 주소는 이들로만 구성되기 때문입니다. 다음 명령을 시도해 볼 수 있습니다.
tr -cd '[0-9. ]' < YOUR_FILE
그런 다음 출력 처리를 계속할 수 있습니다.
답변3
사용
sed -n '/inet addr:/s/[^:]\+:\(\S\+\).*/\1/p'
명령줄에서 이것을 시도해 보세요
ifconfig | sed -n '/inet addr:/s/[^:]\+:\(\S\+\).*/\1/p'
산출
192.168.154.102
127.0.0.1
답변4
특정 패턴을 파악하고 싶다면 다음을 사용하지 않는 것이 좋습니다.
awk -F'[: ]' '/inet addr:/{ print $4}' file