방금 사용하기 시작했고 출력에서 IP 주소를 추출하는 데 sed
사용할 계획입니다 . ping
이것이 내가 달성하고 싶은 것입니다:
텍스트 입력:
ytmti (192.188.2.3) jjggy
원하는 출력:
192.188.2.3
내가 시도하는 명령은 다음과 같습니다.
echo "ytmti (192.188.2.3) jjggy" | sed 's:\((\(192.188.2.3\))\):\2:'
현재 출력:
ytmti 192.188.2.3 jjggy
참고: ytmti
and는 실제로 jjggy
and와 같은 텍스트를 대체합니다.Pinging unix.stackexchange.com
with 32 bytes of data:
내 생각에는 을 사용하는 것이 awk
출력을 구문 분석하는 데 더 나은 솔루션일 수 있지만 ping
익숙해지고 싶습니다 sed
.
답변1
바꾸기 명령은 첫 번째 부분에서 일치하는 모든 문자를 두 번째 부분의 모든 문자로 바꾸 므로 저장하려는 부분만 sed
필요하거나 유사하게 그룹화합니다. 예를 들면 다음과 같습니다..*
echo " ytmti (192.188.2.3) jjggy" | sed 's:^.*(\([^)]*\).*$:\1:'
[^)]*
IP를 하드코딩하고 일반화하는 것을 방지하기 위해 이것을 사용한다는 점에 유의하세요 . 그것은 다음을 생산합니다 :
192.188.2.3
답변2
다음에서 필드 구분 변수를 사용하십시오 awk
.
echo "ytmti (192.188.2.3) jjggy" | awk -F'[)(]' '{print $2}'
192.188.2.3
답변3
다음과 같이 할 수도 있습니다.
echo 'ytmti (192.188.2.3) jjggy' | tr -dc '0-9.'