2017-05-05 15 views
1

다음 출력은 LEDE OS에서 실행되는 iperf 버전 2입니다. IPerF 세션의 평균 처리량 인 초당 Mbits/초 전에 출력을 파싱하려고합니다. 그러나 각 열 사이의 분리가 특정 수의 공백이나 탭과 일치하지 않는 것 같습니다. 또한 iperf으로 생성 된 CSV 형식은 이상한 결과를 생성하므로 결과적으로 iperf의 정규 출력에 의존해야합니다. 모든 제안 정규 표현식 또는 awk 명령을 사용하여 출력을 구문 분석하는 방법?비표준 명령 출력의 구문 분석

iperf 명령

iperf -c 10.0.0.7 -t 10 -i 0.1 -f m 

출력 : 당신은 사람들을위한 grep을 사용할 수 있습니다

[ 3] 0.00-10.00 sec 1889 MBytes 1584 Mbits/sec 15114/0   0  
2483K/3302 us 

답변

2

.

iperf -c 10.0.0.7 -t 10 -i 0.1 -f m | grep -o -E '\w+ Mbits/sec' 

또는

더 정확 :, 당신은 또 다른 정규식을 사용할 수 있습니다 위의

iperf -c 10.0.0.7 -t 10 -i 0.1 -f m | grep -Po '[[:digit:]]+ *(?=Mbits/sec)' 

iperf -c 10.0.0.7 -t 10 -i 0.1 -f m | grep -o -E '[0-9]+ Mbits/sec' 

만 자리를 얻으려면 [[:digit:]]+[0-9]+는 동일과 일치 줄의 숫자.

MacOS X의 FreeBSD grep의 경우 -P이 작동하지 않습니다. 대신 그것은 작동 직접 perl,

iperf -c 10.0.0.7 -t 10 -i 0.1 -f m | perl -nle 'print $& if m{\d+ *(?=Mbits/sec)}' 
+0

를 사용하지만 출력에 Mbit/초를 인쇄합니다. 초당 Mbits를 제거하는 방법에 대한 아이디어가 있습니까? – IoT

+0

내 편집 참조 .... – iamauser

+0

새 명령에 문제가있는 경우 작동하지 않습니다. '사용법 : grep [-HhnlLoqvsriwFE] [-m N] [-A/B/CN] PATTERN/-e PATTERN .../- f 파일 [FILE] ... ' – IoT