내 연결 로그 파일 구조는 다음과 같습니다.
호스트 이름 방향 타임스탬프 bps
이것은 내 로그 파일의 일부입니다.
www.youtube.com DOWNLOAD 1479897661131903 23508910
www.youtube.com UPLOAD 1479897661131922 735
fonts.gstatic.com DOWNLOAD 1479897660289990 527
ssl.gstatic.com UPLOAD 1479897660152435 2094
fonts.gstatic.com DOWNLOAD 1479897660290973 6662177
타임스탬프와 호스트 이름을 기준으로 정렬하고 싶습니다.
sort -k 3 -o sortedTimestamps.log connectionLog.txt
밝혀지다
ssl.gstatic.com UPLOAD 1479897660152435 2094
fonts.gstatic.com DOWNLOAD 1479897660289990 527
fonts.gstatic.com DOWNLOAD 1479897660290973 6662177
www.youtube.com DOWNLOAD 1479897661131903 23508910
www.youtube.com UPLOAD 1479897661131922 735
이것은 단지 예일 뿐입니다. 행 수가 점점 늘어나고 있으며 현재 sort
로그 파일은 타임스탬프별로 정렬되어 있습니다. 이것을 플롯해야 하므로 및를 기반으로 및을 포함하는 다른 hostname
로그 파일을 갖고 싶습니다 .direction
timestamp
bps
최종 결과는 각각에 대한 로그 파일입니다 hostname
.
www.youtube.com_DOWNLOAD_log
,
www.youtube.com_UPLOAD_log
,
fonts.gstatic.com_DOWNLOAD_log
,
fonts.gstatic.com_UPLOAD_log
등, 각 로그 파일에는 정렬된 열과 timestamp
해당 bps
.
예: 다음을 www.youtube.com_DOWNLOAD_log
포함합니다:
timestamp1 bps1
timestamp2 bps2
timestamp3 bps3
...
x축에 timestamp
, y축에 를 사용하여 차트에 이를 플롯합니다 bps
. 나는 그것들을 모두 함께 플롯하고 bps
서로 다른 연결에 대해 타이밍이 어떻게 변하는지 살펴보겠습니다.
추신: 데이터를 시각화하는 것은 이번이 처음이므로 저와 같은 구조로 로그 파일을 구성하는 더 현명한 방법이 있을 수 있습니다. 하지만 여기서 질문은 논의하기보다는 답변을 해야 하므로 로그 파일 분할을 변환하는 데 도움을 주십시오. 각 호스트 이름마다 하나씩 여러 로그 파일로 저장됩니다.
편집(2): Kalavan 덕분에 내 스크립트는 다음과 같습니다.
아, 파이프! 오, Bash의 힘! 좋아요! 내 전체 스크립트는 다음과 같습니다.
#!/bin/bash
echo -e "\nCleaning previous log files...\n"
rm *.log
# File name: HOSTNAME_DIRECTION.log
sort -k1 -k3n connectionLog.txt | awk '{print $3 " " $8 >> $1"_"$2".log"}'
to_plot_upload_files="plot "
to_plot_download_files=" plot "
for file in $(ls *UPLOAD.log); do
to_plot_upload_files="$to_plot_upload_files \"$file\" using 1:2 with lines, "
done
for file in $(ls *DOWNLOAD.log); do
to_plot_download_files="$to_plot_download_files \"$file\" using 1:2 with lines, "
done
echo $to_plot_upload_files | gnuplot -persist
echo $to_plot_download_files | gnuplot -persist
답변1
우선, 다음과 같은 것을 시도해 보십시오. 원하는 경우 추가로 조정할 수 있습니다.
sort -k1 -k3n connectionLog.txt | awk '{print $1 " " $3 " " $4 >> $1".log"}'
편집하다:
호스트 이름이 로그에 포함되는 것을 원하지 않는다는 점을 놓쳤습니다. 첫 번째 필드($1)의 인쇄를 생략합니다.