명령 출력을 타임스탬프가 있는 csv로 변환

명령 출력을 타임스탬프가 있는 csv로 변환

터미널 명령을 사용하여 속도 연결을 테스트하고 싶습니다.

./speedtest-cli

다음을 반환합니다.

Retrieving speedtest.net configuration...
Retrieving speedtest.net server list...
Testing from Moscow, Russia (77.50.8.74)...
Selecting best server based on latency...
Hosted by East Telecom Ltd (Mytishchi) [10.81 km]: 7.433 ms
Testing download speed........................................
Download: 38.06 Mbit/s
Testing upload speed..................................................
Upload: 23.52 Mbit/s

다음과 같은 CSV 행으로 변환하고 싶습니다.

12-12-2016 12:01 ; 38.06 ; 23.52 ;
12-12-2016 12:11 ; 39.00 ; 21.12 ;
12-12-2016 12:21 ; 37.06 ; 25.00 ;

간단한 grep 함수를 사용하여 이를 달성하려고 합니다.

grep 'Upload:' test.txt | sed 's/^.*: //'  >> test_res.txt

하지만 이는 파일에서 속도 번호를 가져오고 매개변수 중 하나만 재정의합니다. 필요한 형식으로 정확한 변환을 작성하는 방법. 저는 bash 스크립팅을 처음 접했습니다.

답변1

awk  -v date="$(date +%d-%m-%Y\ %H:%M)" -v OFS=';' '/Download:/ { d=$2; }
     /Upload:/ { print date, d, $2, ""; d="" }' speedtest

답변2

다음은 기성 솔루션입니다. speedtest-csv 스크립트를 다운로드하고 실행 권한을 부여하세요.

wget -O speedtest-csv https://raw.githubusercontent.com/HenrikBengtsson/speedtest-cli-extras/master/bin/speedtest-csv

chmod +x speedtest-csv

다음으로 speedtest-csv를 /usr/bin/으로 이동합니다.

mv speedtest-csv /usr/bin/

CSV 헤더 생성

speedtest-csv --header >> /var/www/html/speedtest.csv

그런 다음 필요에 맞게 출력을 수정합니다. 예를 들어 마지막 줄을 다음과 같이 변경합니다.

echo $start ";" $upload ";" $download
or
echo $start "Upload:" $upload "Download" $download

고쳐 쓰다

수정된 스크립트를 다음 결과와 함께 첨부합니다.

bash speedtest-csv
2016-06-03 14:12:21 Upload: 258.19 Mbit/s Download 242.71 Mbit/s

여기에 링크 설명을 입력하세요

관련 정보