나는 다음과 같은 결과를 얻었습니다.
Wed Aug 15 19:35:11 CEST 2018
Connecting to host x.x.x.x, port 5201
[ 4] local x.x.x.x port 48944 connected to x.x.x.x port 5201
[ ID] Interval Transfer Bandwidth Retr Cwnd
[ 4] 0.00-1.00 sec 375 MBytes 3.14 Gbits/sec 273 471 KBytes
[ 4] 1.00-2.00 sec 428 MBytes 3.59 Gbits/sec 145 376 KBytes
[ 4] 2.00-3.00 sec 360 MBytes 3.02 Gbits/sec 148 454 KBytes
[ 4] 3.00-4.00 sec 339 MBytes 2.84 Gbits/sec 83 407 KBytes
[ 4] 4.00-5.00 sec 305 MBytes 2.56 Gbits/sec 104 414 KBytes
[ 4] 5.00-6.00 sec 301 MBytes 2.53 Gbits/sec 186 440 KBytes
[ 4] 6.00-7.00 sec 325 MBytes 2.73 Gbits/sec 174 485 KBytes
[ 4] 7.00-8.00 sec 434 MBytes 3.64 Gbits/sec 81 677 KBytes
[ 4] 8.00-9.00 sec 412 MBytes 3.46 Gbits/sec 226 537 KBytes
[ 4] 9.00-10.00 sec 409 MBytes 3.43 Gbits/sec 47 372 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bandwidth Retr
[ 4] 0.00-10.00 sec 3.60 GBytes 3.09 Gbits/sec 1467 sender
[ 4] 0.00-10.00 sec 3.60 GBytes 3.09 Gbits/sec receiver
나는 단지 이런 라인을 원한다 :-)
17-08-15 19:35:11 0.00-10.00 sec 3.60 GBytes 3.09 Gbits/sec 1467
어떻게 이럴 수있어?
이렇게 스크립트를 시작했는데 awk, cut 등을 사용해야 할 것 같습니다.
host=x.x.x.x
log=/data/div/sh/iperf.log
logr=reverseiperf.log
runs=2
for run in $(seq 1 $runs); do
date >> $log && iperf3 -c $host >> $log
done
답변1
이것은 가장 간단한 방법은 아니지만 "단방향"을 보여주기를 바랍니다.
$ printf "%s%s\n" \
"$(TZ=CEST date -d "$(head -1 iperf.txt)" "+%y-%m-%d %H:%M:%S")" \
"$(grep sender iperf.txt | awk -F"] " '{print $2}')"
18-08-15 19:35:11 0.00-10.00 sec 3.60 GBytes 3.09 Gbits/sec 1467 sender
작동 방식은 다음과 같습니다.
printf "%s%s\n"
iperf.txt
- 출력에서 구문 분석할 2개의 문자열을 인쇄합니다."$(TZ=CEST date -d "$(head -1 iperf.txt)" "+%y-%m-%d %H:%M:%S")"
iperf.txt
- ( )의 첫 번째 줄을 구문 분석하여 명령head -1
에 전달date
하고 예제에 표시된 대로 날짜 형식을 다시 지정합니다."$(grep sender iperf.txt | awk -F"] " '{print $2}')"
- 문자열이 포함된 행을 구문 분석한sender
다음 문자별로 행을 분할하고]
분할 인수의 오른쪽을 인쇄합니다.]
이것이 결과입니다$2
.