¿Alguna herramienta de trazado (basada en texto) en la caja de herramientas de Unix?

9

Me preguntaba si hay herramientas de trazado genéricas disponibles en la caja de herramientas de Unix.
Al trazar me refiero a barras simples o cosas que ves en muchas utilidades basadas en maldiciones.
Y por caja de herramientas de Unix me refiero a cosas en las que se pueden canalizar datos utilizando convenciones de Unix estándar.

Necesito contar tail -Falgunas cosas en los archivos de registro (con los que estoy monitoreando o algo) y trazar relaciones en vivo de las cosas (como errores porcentuales o advertencias).

Ali
fuente

Respuestas:

9

Estás buscando gnuplot, con la opción terminalestablecida en dumb.

No es mi primera opción, porque tengo ROOT en todas mis máquinas, sino un modo de espera confiable y ubicuo.

La PAW de Cernlib también podría hacer una salida ASCII, aunque tendría que ser bastante valiente para usarla, ya que parece suponer que tiene un terminal plegable de 132 columnas.

dmckee --- gatito ex moderador
fuente
... The development and support for CERNLIB has been discontinued. Libraries will be continued to be provided "as is"alertando? ¿Cuál es el beneficio de usar la PAW de Cernlib en lugar de R Sweave Latex, por ejemplo? ¿Nunca has oído hablar de esta herramienta genérica? Utilicé gnuplot antes de R Sweave Latex, creo que este último es mucho más conveniente de usar: todo en un archivo de texto, incluidas las imágenes. ¿Puedes hacer esto con gnuplot?
@hhh Notarás el tiempo de "La pata de Cernlib también podría funcionar " , aunque la gente todavía lo usa porque hay una gran cantidad de código maduro.
dmckee --- ex-gatito moderador
muy bien, pero ¿para qué sirve la parte adicional? "132 column fan-fold terminal", ¿Qué es? ¿Para impresoras matriciales? ¿Entonces este es un proyecto muy antiguo? Lo siento, tu respuesta está demasiado confusa "[n]ot my first choice"con gnuplot. Me lleva tiempo entender lo que significa y escribe. ¿Por qué gnuplot?
El modo de salida ASCII para PAW se describió mejor como "torpe". Cuando estaba usando cernlib, era nativo en X y podía escribir directamente en postscript o postscript encapsulado, que es lo que usamos, sin embargo, partes de él pueden rastrear sus raíces hasta el código establecido a principios de la década de 1960. La suposición parece haber sido que tiene un terminal de copia impresa ; muchos de ellos usaron un formato ancho de 132 caracteres con bandas alternas claras y oscuras para que fueran fáciles de leer. Los geeks lo suficientemente viejos podrán recordar las cosas (todavía lo viste ocasionalmente tan tarde como 1980).
dmckee --- ex-gatito moderador
1
set term dumbpara trazar ascii
kev
3

Puede usar R, que puede producir algunos gráficos bastante agradables y hacer muchos análisis estadísticos de sus datos. Esta publicación de blog te muestra una forma de hacerlo.

Del mismo modo, puede usar gnuplot ver aquí y aquí

Sardathrion - contra el abuso SE
fuente
gracias, pero no quiero usar ninguna GUI, no para escribir el código ni para mostrar las parcelas, quiero hacerlo completamente en el terminal. Además, prefiero poder ejecutarlo sin necesidad de sudo (para la instalación de cualquier cosa).
Ali
@Ali: Mira la siguiente publicación de blog: r-bloggers.com/ascii-scatterplots-in-r
Sardathrion - contra el abuso de SE
Gracias, no tenía idea, necesito probar esto, aunque nunca he usado R, pero debería ser fácil para el caso de uso simple mp.
Ali
1

"Generic plotting tools available in the unix toolbox"es probable que sea una herramienta básica de Un * x, necesita combinar herramientas para crear cosas. ¡Me encanta combinar Latex, R y Sweave! El término "logs"deja la pregunta un poco abierta, pero aparentemente a propósito, observe el término "generic". Entonces, nada sobre el preprocesamiento con AWK / SED / etc. y solo sobre el trazado que viene en archivos de texto. ¡Que te diviertas!

ingrese la descripción de la imagen aquí

$ 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}

Ahora el siguiente enigma es la accesibilidad (suponiendo que el operador quiera una salida ASCII, no solo una herramienta genérica). Lo siento, todavía no tengo una respuesta, pero enumeraré la información a continuación para una mayor exploración.

Solo piense en voz alta: elija el formato de imagen ráster como TIFF y luego imprima cada 100 columnas o algo así para verlo. Perdón por especular, pero sé que TIFF es un formato de imagen ráster de facto para todo tipo de archivo. Todavía no sé exactamente cómo los manejan los motores OCR, como Tesseract, pero aquí el problema es fácil porque puedes omita muchas cosas en el preprocesamiento de la imagen, porque sabemos cómo R las genera. Alguien tuvo una idea de cómo hacer esto? ¿O estoy reinventando la rueda? En el más simple, elija una herramienta que genere problemas con ASCII, un poco restrictivo para ser "generic".

Relacionado

  1. ¿Qué herramientas para la visualización de la cartera ASCII?
Comunidad
fuente
Lea la pregunta cuidadosamente (y los comentarios donde se hace más explícito). El OP quiere mostrar resultados en el terminal .
dmckee --- ex-gatito moderador
@dmckee: sí, pero ¿también requiere una "generic"herramienta? Ahora, esta es difícil porque creo que infiere problemas basados ​​en OCR, no estoy seguro de si op se da cuenta.
Por "genérico" me refiero a herramientas multipropósito, cosas como awky sedque no son "específicas", no diseñadas para un caso de uso específico. Lo siento si es confuso. básicamente quiero hacer trazados de barras muy simples en la terminal. Eso es todo.
Ali
@ Ali: deja de explicar. Usted ordena, nosotros respondemos, y la mejor respuesta gana. Mi respuesta funciona excepto "salida ASCII". Su pregunta es clara como el cristal, pero en este momento no puedo ayudarlo más; no me preocupe que las personas tengan diferentes puntos de vista, solo relájese; alguien tarde o temprano resolverá esto. También estoy buscando una solución para un problema similar, así que quizás no ... no estoy seguro de si tenemos que investigar en los motores OCR para resolver esto, pero creo que esta pregunta aún está "unsolved"
1

Simplemente puede canalizar su salida numérica a un fragmento de Perl simple. Por ejemplo, aquí hay un programa de prueba (en bash) que solo genera números crecientes:

(i=0; while true; do sleep 1; echo $i; i=$(( $i + 3 )); done)

Suponiendo que estoy interesado en un rango de valores de 0 a 20, y tengo un terminal de 80 caracteres de ancho, haré:

[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 *****************************************************************************|

Algo como esto funcionará en casi cualquier sistema Linux, y la salida y los parámetros son fáciles de modificar. La sobrecarga en comparación con el uso de algo como gnuplot es minúscula.

HorsePunchKid
fuente