Qualche strumento di stampa (basato su testo) nella casella degli strumenti unix?


9

Mi chiedevo se ci sono strumenti di stampa generici disponibili nella casella degli strumenti unix?
Con la trama intendo semplici barre o cose che vedi in molte utility basate su maledizioni.
E per toolbox unix intendo cose su cui puoi reindirizzare i dati usando convenzioni unix standard.

Ho bisogno di contare qualcosa nei file di registro (con cui sto monitorando tail -Fo qualcosa del genere) e tracciare rapporti in tempo reale di cose (come errori percentuali o avvisi).

Risposte:


9

Stai cercando gnuplot, con l'opzione terminalimpostata su dumb.

Non è la mia prima scelta, perché ho ROOT su tutte le mie macchine, ma uno standby affidabile e onnipresente.

Il PAW di Cernlib potrebbe anche produrre output ASCII, anche se dovresti essere abbastanza coraggioso per usarlo come sembra supporre che tu abbia un terminale fan-fold a 132 colonne.


... The development and support for CERNLIB has been discontinued. Libraries will be continued to be provided "as is"allerta? Qual è il vantaggio di usare PAW di Cernlib invece di R Sweave Latex per esempio? Mai sentito parlare di questo strumento generico ?! Ho usato gnuplot prima di R Sweave Latex, trovo che quest'ultimo sia molto più comodo da usare: tutto in un file di testo, comprese le immagini. Puoi farlo con gnuplot?

@hhh Noterai il tempo di "Il PAW di Cernlib potrebbe anche fare" , sebbene la gente lo usi ancora perché c'è molto codice maturo là fuori.
dmckee --- ex-moderatore gattino

molto bene ma a cosa serve la parte aggiunta? "132 column fan-fold terminal", che cos'è? Per le stampanti ad aghi? Quindi questo è un progetto molto vecchio ?! Mi dispiace che la tua risposta sia troppo offuscata dall'età, "[n]ot my first choice"con gnuplot? Mi ci vuole tempo per capire cosa stai significando e scrivendo. Perché gnuplot?

La modalità di uscita ASCII per PAW è stata meglio descritta come "goffa". Quando usavo cernlib era nativo su X e poteva scrivere direttamente su Postscript o Postscript incapsulato, che è quello che abbiamo usato, tuttavia, parti di esso possono rintracciare le loro radici nel codice stabilito nei primi anni '60. Sembra che tu abbia un terminale cartaceo ; molti di questi hanno usato un formato di 132 caratteri con bande chiare e scure alternate per renderli di facile lettura. I fanatici abbastanza anziani saranno tutti in grado di ricordare la roba (l'hai ancora vista di tanto in tanto fino al 1980).
dmckee --- ex-moderatore gattino

1
set term dumbper tramare ascii
kev il

3

Puoi usare R che può produrti dei grafici piuttosto carini e fare molte analisi statistiche sui tuoi dati. Questo post sul blog ti mostra un modo per farlo.

Allo stesso modo, puoi usare gnuplot vedi qui e qui


grazie, ma non voglio usare alcuna GUI, non per scrivere il codice né per mostrare i grafici, voglio farlo interamente nel terminale. Inoltre, preferirei essere in grado di eseguirlo senza bisogno di sudo (per l'installazione di nulla).
Ali,


grazie, non avevo idea, ho bisogno di provare questo, anche se non ho mai usato R ma dovrebbe essere facile per mp semplice caso d'uso.
Ali,

1

"Generic plotting tools available in the unix toolbox"è probabilmente ogni strumento Un * x di base, è necessario combinare strumenti per creare cose. Adoro combinare Latex, R e Sweave! Il termine "logs"lascia la domanda un po 'aperta ma apparentemente di proposito, si noti il ​​termine "generic". Quindi nulla sulla pre-elaborazione con AWK / SED / etc e solo sulla stampa in arrivo in file di testo. Divertiti!

inserisci qui la descrizione dell'immagine

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

Ora il puzzle successivo è l'accessibilità (supponendo che l'op voglia l'output ASCII, non solo uno strumento generico). Mi dispiace non ho ancora una risposta per questo, ma elencherò di seguito le informazioni per ulteriori esplorazioni.

Basta pensare ad alta voce: scegli un formato di immagine raster come TIFF e poi stampa la 100esima colonna o cose del genere per vederlo. Mi spiace solo speculare, ma so che TIFF è di fatto un formato di immagine raster per tutti i tipi di scopi di archiviazione - Non so ancora esattamente come i motori OCR, come Tesseract, li gestiscano, ma qui il problema è facile perché puoi salta molte cose nella preelaborazione dell'immagine, perché sappiamo come R le genera. Qualcuno ha avuto un'idea di come farlo? O sto reinventando la ruota? Nel modo più semplice, scegli uno strumento che genera le battute in ASCII, un po 'restrittivo "generic".

Relazionato

  1. Quali strumenti per la visualizzazione del portfolio ASCII?

Leggi attentamente la domanda (e i commenti in cui è resa più esplicita). L'OP desidera visualizzare i risultati nel terminale .
dmckee --- ex-moderatore gattino

@dmckee: sì ma op richiede anche uno "generic"strumento ?! Ora questo è difficile perché penso che infili i probi basati su OCR, non sono sicuro che op lo realizzi.

Con "generico" intendo, strumenti multiuso, cose simili awke sedche non sono "specifiche", non progettate per un caso d'uso specifico. Scusa se è confuso. fondamentalmente voglio creare trame di barre molto semplici nel terminale. È tutto.
Ali,

@Ali: smetti di spiegare. Tu comandi, noi rispondiamo - e la migliore risposta vince. La mia risposta funziona tranne "Emissione ASCII". La tua domanda è chiara ma in questo momento non posso aiutarti ulteriormente - non preoccuparti per le persone che hanno opinioni diverse, rilassati - qualcuno prima o poi risolverà questo. Sto anche cercando una soluzione a un problema simile, quindi forse non ... non saremo sicuri di dover scavare nei motori OCR per risolvere questo problema, ma penso che questa domanda sia ancora "unsolved", cercheremo questo ...

1

Puoi semplicemente reindirizzare l'output numerico a un semplice frammento di perl. Ad esempio, ecco un programma di test (in bash) che genera solo numeri crescenti:

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

Supponendo che io sia interessato a un intervallo di valori da 0 a 20 e che abbia un terminale largo 80 caratteri, lo farò:

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

Qualcosa del genere funzionerà praticamente su qualsiasi sistema Linux, e l'output e i parametri sono facili da modificare. Il sovraccarico rispetto all'utilizzo di qualcosa come gnuplot è minuscolo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.