私の接続ログファイルの構造は次のとおりです。
ホスト名方向タイムスタンプ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
変化するかを見てみましょう。
PS:データを視覚化するのは今回が初めてなので、私と同じ構造でログファイルを整理するより賢い方法があるかもしれません。しかし、ここで質問は議論するのではなく答える必要があるので、ログファイルの分割を変換するのに役立ちます。ホスト名ごとに1つずつ、複数のログファイルとして保存されます。
編集(2):Kalavanのおかげで、私のスクリプトは次のようになります。
ああ、パイプ!ああ、バッシュの力!いいね!私のスクリプト全体は次のとおりです。
#!/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)の印刷を省略します。