UNIXツールボックスで利用できる一般的なプロットツールがあるかどうか疑問に思いましたか?
プロットとは、単純なバーや、多くのcursesベースのユーティリティに見られるものを意味します。
そしてunixツールボックスとは、標準のunix規則を使用してデータをそれらにパイプできることを意味します。
ログファイル内の何か(tail -F
などで監視しているもの)を数え、物事のライブ比率(パーセントエラーや警告など)をプロットする必要があります。
探しているのは gnuplot
で、オプションterminal
をdumb
に設定します。
すべてのマシンに [〜#〜] root [〜#〜] があるため、最初の選択肢ではありませんが、信頼性が高く、ユビキタスなスタンバイです。
Cernlib 's Paw もASCII出力を実行できますが、実際に使用するにはかなり勇敢である必要があります。 132列のファンフォールド端子があると仮定します。
[〜#〜] r [〜#〜] を使用すると、非常に優れたグラフが作成され、データに対して多くの統計分析を行うことができます。 このブログ投稿 それを行う方法を示しています。
"Generic plotting tools available in the unix toolbox"
はおそらくすべての基本的なUn * xツールであり、ツールを組み合わせて物を作成する必要があります。私はLaTeX、R、Sweaveを組み合わせるのが大好きです! "logs"
という用語は質問を少し開いたままにしますが、明らかに目的のために、"generic"
という用語に注意してください。したがって、AWK/SED/etcを使用した前処理については何もせず、テキストファイルでのプロットについてのみです。楽しんで!
$ mkdir Pictures
$ R CMD Sweave paper.Rnw
Writing to file paper.tex
Processing code chunks with options ...
1 : term verbatim
You can now run (pdf)latex on 'paper.tex'
$ pdflatex paper.tex 3&>/dev/null
$ evince paper.pdf
paper.tex
$ cat paper.tex
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{graphicx}
\usepackage[T1]{fontenc} % intended quotes
\begin{document}
\sloppy
<<echo=FALSE>>=
png('./Pictures/examples.png')
x<-1:10
y<-10:1
par(mfrow=c(2,2))
# Demand/Supply example
plot(x,y-2, type='l', ylab='Price', xlab="Quantity")
lines(y,x+2)
lines(x,x)
title(main="Examples by HHH for R Sweave Latex")
hist(rnorm(100)) # histogram example
plot(sin(1:1E3),cos(1:1E3)) # circle example
plot(sin(1:1E3),1:1E3) # sin example
@
\includegraphics{./Pictures/examples.png}
\end{document}
次のパズルはアクセシビリティです(opがASCII出力、汎用ツールだけでなく)を望んでいると仮定します)。申し訳ありませんが、まだ答えはありませんが、さらに詳しく調べるために以下の情報をリストします。
声に出して考えてみてください。TIFFなどのラスター画像形式を選択してから、100列ごとまたはそのようなものを印刷して表示します。推測して申し訳ありませんが、TIFFはあらゆる種類のアーカイブ目的の事実上のラスター画像形式であることを知っています-TesseractなどのOCRエンジンがそれらをどのように処理するかはまだ正確にはわかりませんが、ここでは問題は簡単です。画像の前処理で多くのものをスキップします-Rがそれらを生成する方法を知っているからです。誰かがこれをどのように行うのか考えましたか?それとも私は車輪の再発明をしていますか?最も簡単な方法として、ASCIIへのヒンジを生成するツールを選択します。これは"generic"
に少し制限されています。
関連
数値出力を単純なPerlスニペットにパイプするだけです。たとえば、次のテストプログラム(bash)は、増加する数値を出力するだけです。
(i=0; while true; do sleep 1; echo $i; i=$(( $i + 3 )); done)
0から20までの値の範囲に関心があり、幅が80文字の端末があるとすると、次のようにします。
[above snippet] | Perl -ne '$min=0; $max=20; $w=80; use POSIX; $d=ceil(log($max)/log(10)); $w-=$d; $v=$_<$min?0:$_>$max?$max:$_; $s=$w*$v/($max-$min); $bar=join("", ("*")x$s); $bar=~s/.$/|/ if $v==$max; print sprintf("%${d}d ",$_)."$bar\n";'
0
3 ***********
6 ***********************
9 ***********************************
12 **********************************************
15 **********************************************************
18 **********************************************************************
21 *****************************************************************************|
24 *****************************************************************************|
このようなものは、ほぼすべてのLinuxシステムで機能し、出力とパラメーターは簡単に調整できます。 gnuplotのようなものを使用する場合と比較したオーバーヘッドはごくわずかです。