이를 실행하면 ping example.com
각 교환 결과가 콘솔에 인쇄됩니다. 모든 정보를 표시하는 대신 해당 결과의 하위 집합만 표시하도록 각 결과를 필터링하고 싶습니다.
따라서 대신:
PING example.com (93.184.216.34) 56(84) bytes of data.
64 bytes from 93.184.216.34 (93.184.216.34): icmp_seq=2 ttl=55 time=1201 ms
64 bytes from 93.184.216.34 (93.184.216.34): icmp_seq=3 ttl=55 time=783 ms
64 bytes from 93.184.216.34 (93.184.216.34): icmp_seq=4 ttl=55 time=417 ms
64 bytes from 93.184.216.34 (93.184.216.34): icmp_seq=5 ttl=55 time=159 ms
64 bytes from 93.184.216.34: icmp_seq=6 ttl=55 time=886 ms
터미널에 인쇄하고 싶은 내용은 다음과 같습니다.
1201ms
783ms
417ms
159ms
886ms
구체적인 답변을 받아들이겠지만 ping
, 동적 절차를 취하고 반환되는 각 문자열을 다른 문자열로 처리할 수 있는 일반적인 답변을 선호합니다. 그게 더 일반적이기 때문입니다. 저는 특히 쉘 솔루션에 관심이 있습니다. xargs
쉘 솔루션이 파이프 리디렉션을 허용하는 특정 프로그램의 제한 사항을 해결할 수 있는 것과 같은 방식입니다.
답변1
내 제안은 을 사용하는 것입니다 sed
. 무언가를 다른 것으로 변환하려는 것 외에 동적 문자열이 무엇을 의미하는지 이해하지 못합니다. 대부분의 필터가 이 작업을 수행합니다.
ping -c 3 1.1.1.1 | sed -En 's/.*=([0-9.]+) ([a-z]+)$/\1\2/p'
32.5ms
34.5ms
37.5ms
답변2
"동적 프로세스를 허용한다"는 것이 무엇을 의미하는지 잘 모르겠지만 귀하의 ping
경우 출력을 다음으로 파이프할 수 있습니다.cut
ping example.com | cut -d= -f4
12.6 ms
11.3 ms
19.4 ms