Jakieś narzędzia tekstowe w narzędziu unix?


9

Zastanawiałem się, czy w przyborniku unix dostępne są ogólne narzędzia do drukowania?
Przez spiskowanie rozumiem proste paski lub rzeczy, które widzisz w wielu narzędziach opartych na klątwach.
Przez zestaw narzędzi unix mam na myśli rzeczy, które można do nich przesyłać danymi przy użyciu standardowych konwencji unix.

Muszę policzyć coś w plikach dziennika (które monitoruję tail -Flub coś takiego) i wykreślić stosunki na żywo rzeczy (takich jak procent błędów lub ostrzeżeń).

Odpowiedzi:


9

Szukasz gnuplot, z opcją terminalustawioną na dumb.

Nie mój pierwszy wybór, ponieważ mam ROOT na wszystkich moich komputerach, ale niezawodny, wszechobecny tryb gotowości.

Cernlib „s PAW może również zrobić wyjście ASCII, choć trzeba by być dość odważny, aby rzeczywiście go używać, ponieważ wydaje się zakładać, że masz 132 kolumna fan-krotnie terminalu.


... The development and support for CERNLIB has been discontinued. Libraries will be continued to be provided "as is"alarmuje? Jaka jest korzyść ze stosowania PAW Cernliba zamiast na przykład Lateksu Sweave R? Nigdy o tym nie słyszałeś, ogólne narzędzie ?! Użyłem gnuplot przed R Sweave Latex, uważam, że ten drugi jest znacznie wygodniejszy w użyciu - wszystko w jednym pliku tekstowym, w tym zdjęcia. Czy możesz to zrobić za pomocą gnuplot?

@ hhh Zauważysz, że czas „PAW Cernliba też może zrobić” , chociaż ludzie nadal go używają, ponieważ istnieje wiele dojrzałych kodów.
dmckee --- były moderator kociak

bardzo dobrze, ale po co jest dodana część? "132 column fan-fold terminal", co to jest? Do drukarek igłowych? To jakiś bardzo stary projekt ?! Przepraszam, że twoja odpowiedź jest zbyt zaciemniona "[n]ot my first choice"z powodu gnuplot? Zajmuje mi czas, aby zrozumieć, co masz na myśli i piszesz. Dlaczego gnuplot?

Tryb wyjściowy ASCII dla PAW najlepiej opisać jako „niezgrabny”. Kiedy korzystałem z cernlib, był on natywny na X i mógł pisać bezpośrednio do postscriptowego lub enkapsulowanego postScriptu, z którego korzystaliśmy, jednak niektóre jego części mogą prześledzić swoje korzenie w kodzie ustanowionym na początku lat sześćdziesiątych. Wygląda na to, że masz terminal w wersji papierowej ; wiele z nich używało formatu 132 znaków z naprzemiennymi jasnymi i ciemnymi pasmami, aby były łatwe do odczytania. Dość starzy maniacy będą mogli zapamiętać te rzeczy (wciąż widywałeś je od czasu do 1980 roku).
dmckee --- były moderator kociak

1
set term dumbspiskować ascii
kev

3

Możesz użyć R, który może wygenerować całkiem niezłe wykresy i przeprowadzić wiele analiz statystycznych twoich danych. Ten post na blogu pokazuje, jak to zrobić.

Podobnie możesz użyć gnuplot patrz tutaj i tutaj


dzięki, ale nie chcę używać żadnego GUI, ani do pisania kodu, ani do wyświetlania wykresów, chcę to zrobić całkowicie w terminalu. Poza tym wolałbym móc go uruchomić bez potrzeby sudo (do instalacji czegokolwiek).
Ali,


dzięki, nie miałem pojęcia, muszę to wypróbować, chociaż nigdy nie użyłem R, ale powinno być łatwe dla mp prosty przypadek użycia.
Ali

1

"Generic plotting tools available in the unix toolbox"jest prawdopodobnie każdym podstawowym narzędziem Un * x, musisz łączyć narzędzia, aby tworzyć rzeczy. Uwielbiam łączyć lateks, R i Sweave! Termin "logs"pozostawia pytanie nieco otwarte, ale najwyraźniej celowo, zwróć uwagę na to "generic". Nie ma więc nic na temat wstępnego przetwarzania w AWK / SED / etc, a jedynie na temat drukowania w plikach tekstowych. Baw się dobrze!

wprowadź opis zdjęcia tutaj

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

Teraz kolejną łamigłówką jest dostępność (zakładając, że operacja chce wyjścia ASCII, a nie tylko ogólnego narzędzia). Niestety nie mam jeszcze na to odpowiedzi, ale wymienię poniżej informacje do dalszych badań.

Po prostu myśl na głos: wybierz format obrazu rastrowego, takiego jak TIFF, a następnie po prostu wydrukuj co 100 kolumnę lub inną rzecz, aby to zobaczyć. Przepraszam, tylko spekuluję, ale wiem, że TIFF jest de facto formatem rastrowym do wszelkiego rodzaju celów archiwalnych - nie wiem jeszcze dokładnie, jak radzą sobie z nimi silniki OCR, takie jak Tesseract, ale tutaj problem jest prosty, ponieważ możesz pomiń wiele rzeczy podczas wstępnego przetwarzania obrazu - ponieważ wiemy, w jaki sposób R je generuje. Ktoś wpadł na pomysł, jak to zrobić? A może wynajduję koło? Najprościej, wybierz narzędzie, które generuje zawiasy do ASCII, co może być nieco restrykcyjne "generic".

Związane z

  1. Jakie narzędzia do wizualizacji portfela ASCII?

Przeczytaj uważnie pytanie (i komentarze, w których jest ono wyraźniejsze). OP chce wyświetlić wyniki w terminalu .
dmckee --- były moderator kociak

@dmckee: tak, ale op wymaga także "generic"narzędzia ?! Teraz jest to trudne, ponieważ myślę, że wnioskuje na podstawie sond opartych na OCR, nie jestem pewien, czy operacja to realizuje.

Przez „ogólny” rozumiem narzędzia wielofunkcyjne, takie jak awki sedktóre nie są „specyficzne”, nie są przeznaczone do konkretnego zastosowania. Przepraszam, jeśli to mylące. w zasadzie chcę wykonać bardzo proste wykresy słupkowe w terminalu. To wszystko.
Ali,

@Ali: przestań wyjaśniać. Ty dowodzisz, my odpowiadamy - a najlepsza odpowiedź wygrywa. Moja odpowiedź działa oprócz „Wyjścia ASCII”. Twoje pytanie jest krystalicznie czyste, ale w tej chwili nie mogę ci pomóc - nie przejmuj się ludźmi o różnych poglądach, po prostu zrelaksuj się - ktoś prędzej czy później to rozwiąże. Szukam również rozwiązania podobnego problemu, więc może ... nie będziemy pewni, czy musimy zagłębić się w silniki OCR, aby rozwiązać ten problem, ale myślę, że to pytanie jest nadal "unsolved",

1

Możesz po prostu potokować wyjście liczbowe do prostego fragmentu perla. Na przykład, oto program testowy (w bash), który po prostu wyświetla rosnące liczby:

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

Zakładając, że jestem zainteresowany zakresem wartości od 0 do 20 i mam terminal o szerokości 80 znaków, zrobię:

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

Coś takiego będzie działać na prawie każdym systemie Linux, a dane wyjściowe i parametry można łatwo dostosować. Narzut w porównaniu do używania czegoś takiego jak gnuplot jest niewielki.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.