텍스트 파일의 핑 시간을 추출하고 다른 텍스트 파일/목록으로 정렬하는 방법

텍스트 파일의 핑 시간을 추출하고 다른 텍스트 파일/목록으로 정렬하는 방법

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의 출력을 정렬 명령으로 파이프할 수 있습니다.

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

관련 정보