특정 웹사이트의 핑이 포함된 로그 파일이 있는데, 텍스트 파일은 pingoutput.txt
각 핑 응답이 한 줄로 구분되어 호출됩니다. 이제 이 텍스트 파일에서 그 사이의 왕복 시간을 추출 time=
하고 이를 다른 텍스트 파일이나 목록으로 추출 해야 합니다 ms
. 그런 다음 이를 가장 작은 것부터 가장 큰 것까지 정렬할 수 있습니다.
64 bytes from onofri.org (67.222.36.105): icmp_req=1 ttl=47 time=202 ms
64 bytes from onofri.org (67.222.36.105): icmp_req=2 ttl=47 time=206 ms
64 bytes from onofri.org (67.222.36.105): icmp_req=3 ttl=47 time=215 ms
파일 pingoutput.txt
도 약 86400줄로 큽니다. 저는 Linux의 쉘 스크립트를 통해 이 작업을 수행합니다.
답변1
이것은 나에게 효과적입니다.
sed 's/.*time=\([0-9]*\) .*/\1/' times | sort -n > outfile
times
이 파일은 어디에 있습니까:
cat times
64 bytes from onofri.org (67.222.36.105): icmp_req=1 ttl=47 time=202 ms
64 bytes from onofri.org (67.222.36.105): icmp_req=2 ttl=47 time=206 ms
64 bytes from onofri.org (67.222.36.105): icmp_req=3 ttl=47 time=215 ms
다음과 같습니다 outfile
.
cat outfile
202
206
215
답변2
Perl 정규식 및 grep을 사용할 수도 있습니다.
grep -oP '(?<=time\=).*' pingoutput
답변3
다음 샘플 스크립트를 사용하여 시간을 추출할 수 있습니다.
awk -F\= '{print int($4)}' pingoutput.txt
=를 구분 기호로 사용하고 int 함수를 사용하여 "202 ms" 문자열의 수만 가져옵니다.
출력을 다른 파일로 리디렉션하려면 다음 명령을 사용하십시오.
awk -F\= '{print int($4)}' pingoutput.txt > times.txt
출력을 정렬하려면 awk의 출력을 sort 명령으로 파이프하면 됩니다.
awk -F\= '{print int($4)}' pingoutput.txt |sort -n > times.txt
답변4
pcre
당신에게 선택권이 있다면grep
$ grep -oP 'time=\K\d+' pingout.txt
202
206
215
$ grep -oP 'time=\K\d+' pingout.txt | sort -n
202
206
215
$ grep -oP 'time=\K\d+' pingout.txt | sort -nr
215
206
202
time=\K
활성 후면보기문자열time=
- 이것은 출력의 일부가 아닙니다\d+
[^ ]+
공백 이외의 문자를 추출하는 데에도 사용할 수 있는 하나 이상의 숫자
출력을 파일에 저장하려면 >
리디렉션을 사용하십시오.
$ grep -oP 'time=\K\d+' pingout.txt | sort -n > op.txt
$ cat op.txt
202
206
215