bash, Datenvisualisierung per Bar Graph

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
Henry57
Beiträge: 17
Registriert: 04.02.2020 16:06:23

bash, Datenvisualisierung per Bar Graph

Beitrag von Henry57 » 10.07.2020 04:13:09

Hallo,

ich habe unter bash in einem Prozess nacheinander z.B. folgende Zahlen an fallen:
eingabewerte
1 3 1 10 2 2 2 1 1 1 1 2 1 1 1 1 1 5 1 2 1 1 1 3 1 10 3 1 2 3 2 1 10 1 3 1 10 1 10 1 5 5 5 1 1 3 2 1 5 1 1 1 5 3 1 1 10 10 3 1 1 5 1 1 1 2 2 5 10 1 2 10 1 1 10 1 2 10 2 1 1 1 5 1 2 1 5 10 1 5 1 2 1 1 1 1 1 3 1
Obiege Zahlen füge ich erfolgreich nacheinander folgendem Array so hinzu, das obige Zahlen mit je einem Leerzeichen getrennt in diesem landen:
Obige Zahlen habe ich
# Werte zu Array hinzu fügen
meinarray=( "${meinarray[@]}" "$eingabewert" )
echo ${meinarray[@]}
Jetzt kommt ein Teil der für den ich bisher keine Lösung finden konnte:
* Umwandlung und Übergabe des Arrayinhaltes im folgenden Format (gezählt wie viel Zahlen es pro Zahl gibt und dann dieses dann aufsteigend oder absteigend geordnet, ideal wahlweise aufsteigend oder absteigend geordnet) :
Zahl:Anzahl Zahl:Anzahl ... Zahl:Anzahl
Übergabe an folgendes funktionierendes Bash Script zur Visualisierung der obigen Werte, mit dem das Script dan im Terminal ein Balkendiagramm dar stellt:
Aufrufbeispiel für barplot.sh im Terminal, mit beispielhaft per Hand für das benötigte Format erstellte Daten:
cd Pfad des Scripts ein geben
./v-barplot.sh 1:33 2:9 3:12 4:31 5:44 6:12 7:67 8:11 9:14 10:27

Code: Alles auswählen

barplot.sh

#!/bin/bash
### Locales 
SUM="$*"        # see all key value pairs
OUTPUTCHAR='#'  # configure this to your favorite ascii char 
BORDERCHAR='|'  # configure this to your favorite ascii char 
BOTTOMCHAR='='

# Read from stdin hack
if [ -z "$*" ]; then
    SUM=$(cat /dev/stdin)
fi
    
### Scaling and environment analysis for optimal output on 
# the most terminals 
for data in $SUM; do

    # Getting informations from parameters
    KEY=${data%%:*}
    VALUE=${data##*:}

    # Fishing errors from wrong usage
    if [[ ! $VALUE =~ ^[[:digit:]]+$ ]]; then
        echo "ERROR: Do not use characters as value! Key:$KEY Value:$VALUE"
        exit 1
    fi

    # Bash couldn't handle values with more than 19 numbers
    # Values longer than 19 will be transformed into strings.
    # String could not be graphed :) 
    if [[ ${#VALUE} -gt 19 ]]; then 
        echo "Error: Bash couldn't handle values with more than 19 numbers. Sorry."
        exit 1
    fi

    # Fishing the biggest value 
    (( VALUE > MAXVALUE )) && MAXVALUE=$VALUE

done

# Scaling action
FACTORCOUNT=0
if [ ${MAXVALUE:0:1} -gt 7 ] && [ ${#MAXVALUE} -gt 1 ]; then
    FACTOR=3
elif [ ${MAXVALUE:0:1} -gt 2 ] && [ ${#MAXVALUE} -gt 1 ]; then
    FACTOR=2
else
    FACTOR=1
fi
while [ ${FACTORCOUNT} -lt $(( ${#MAXVALUE} - 2 )) ]; do
    FACTOR="${FACTOR}0"
    ((FACTORCOUNT++))
done

# Start graphing
COUNTER="$(($MAXVALUE / $FACTOR))"
while [ $COUNTER -gt 0 ]; do

    # Print (scaled) number and limiter
    SIGNC=$(($COUNTER * $FACTOR))
    while [ ${#SIGNC} -lt ${#MAXVALUE} ]; do
        SIGNC=" $SIGNC"
    done
    echo -n "$SIGNC $BORDERCHAR"

    # Looping all data sets for each Step (downwards)
    for data in $SUM ; do 
        
        # Parsing data
        KEY=${data%%:*}
        VALUE=${data##*:}
        VALUE=$(($VALUE / $FACTOR))

        # If number equal or less the actual counter print a char
        if [ $COUNTER -le $VALUE ]; then
            echo -n "${OUTPUTCHAR}${OUTPUTCHAR}${OUTPUTCHAR} "
        else    
            echo -n "    "
        fi

    done

    # Round ends, do next (scaled) round
    ((COUNTER--))
    echo

    # Bulding bottom lines
    if [ $COUNTER -le 0 ]; then

        # Bottom of Graph
        SPACEC=0
        while [ $SPACEC -le ${#MAXVALUE} ]; do
            echo -n " "
            ((SPACEC++))
        done
        echo -n "$BORDERCHAR"
        for name in $SUM; do 
            echo -n "${BOTTOMCHAR}${BOTTOMCHAR}${BOTTOMCHAR}${BOTTOMCHAR}"
        done
        echo 

        # Key names
        SPACEC=0
        while [ $SPACEC -le ${#MAXVALUE} ]; do
            echo -n " "
            ((SPACEC++))
        done
        echo -n " "
        for name in $SUM; do
            KEY=${name%%:*}

            if [ ${#KEY} -ge 4 ]; then 
                KEY=${KEY:0:3}
            fi
            # Do key scaling action for terminal
            if [ ${#KEY} -ge 4 ]; then 
                KEY=${KEY:0:3}
            elif [ ${#KEY} -eq 2 ]; then
                echo -n "$KEY  "
            elif [ ${#KEY} -eq 1 ]; then
                echo -n "$KEY   "
            else
                echo -n "$KEY "
            fi
        done
        echo 
    fi
done
Zuletzt geändert von Meillo am 10.07.2020 07:06:16, insgesamt 1-mal geändert.
Grund: Meillo: code-Tags fuer Code

eggy
Beiträge: 3331
Registriert: 10.05.2008 11:23:50

Re: bash, Datenvisualisierung per Bar Graph

Beitrag von eggy » 10.07.2020 05:15:34

Code: Alles auswählen

echo "1 3 1 10 2 2 2 1 1 1 1 2 1 1 1 1 1 5 1 2 1 1 1 3 1 10 3 1 2 3 2 1 10 1 3 1 10 1 10 1 5 5 5 1 1 3 2 1 5 1 1 1 5 3 1 1 10 10 3 1 1 5 1 1 1 2 2 5 10 1 2 10 1 1 10 1 2 10 2 1 1 1 5 1 2 1 5 10 1 5 1 2 1 1 1 1 1 3 1" | tr " " "\n" | sort | uniq -c
allerdings noch falschrum

Code: Alles auswählen

 
 echo "1 3 1 10 2 2 2 1 1 1 1 2 1 1 1 1 1 5 1 2 1 1 1 3 1 10 3 1 2 3 2 1 10 1 3 1 10 1 10 1 5 5 5 1 1 3 2 1 5 1 1 1 5 3 1 1 10 10 3 1 1 5 1 1 1 2 2 5 10 1 2 10 1 1 10 1 2 10 2 1 1 1 5 1 2 1 5 10 1 5 1 2 1 1 1 1 1 3 1" | tr " " "\n" | sort | uniq -c | sed "s_  *__" | sed "s_ _:_" | tr "\n" " " 
 
immernoch falschrum, wobei der Teil mit sed auch noch schöner geht, aber das überlass ich gerne anderen (Meillo? :mrgreen: )
Fürs Umdrehen der key:value Paare fällt mir nur ne Lösung mit awk ein, falls jemand noch was anderes kennt, würde mich interessieren.

Aber wenn man awk eh schon bemüht, dann kann man auch gleich dessen Arrays nehmen:

Code: Alles auswählen

 echo "1 3 1 10 2 2 2 1 1 1 1 2 1 1 1 1 1 5 1 2 1 1 1 3 1 10 3 1 2 3 2 1 10 1 3 1 10 1 10 1 5 5 5 1 1 3 2 1 5 1 1 1 5 3 1 1 10 10 3 1 1 5 1 1 1 2 2 5 10 1 2 10 1 1 10 1 2 10 2 1 1 1 5 1 2 1 5 10 1 5 1 2 1 1 1 1 1 3 1" | tr " " "\n"   |awk '{arr[$1] =arr[$1]+1 } END { for (key in arr) { printf ( key ":" arr[key] ) " " }}'
oder besser/kürzer/lesbarer

Code: Alles auswählen

echo "1 3 1 10 2 2 2 1 1 1 1 2 1 1 1 1 1 5 1 2 1 1 1 3 1 10 3 1 2 3 2 1 10 1 3 1 10 1 10 1 5 5 5 1 1 3 2 1 5 1 1 1 5 3 1 1 10 10 3 1 1 5 1 1 1 2 2 5 10 1 2 10 1 1 10 1 2 10 2 1 1 1 5 1 2 1 5 10 1 5 1 2 1 1 1 1 1 3 1" | tr " " "\n" | sort | uniq -c  | awk -F " " '{printf $2 ":"$1 " "}'  

Benutzeravatar
Meillo
Moderator
Beiträge: 8819
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: bash, Datenvisualisierung per Bar Graph

Beitrag von Meillo » 10.07.2020 07:23:54

eggy hat geschrieben: ↑ zum Beitrag ↑
10.07.2020 05:15:34

Code: Alles auswählen

 
 echo "1 3 1 10 2 2 2 1 1 1 1 2 1 1 1 1 1 5 1 2 1 1 1 3 1 10 3 1 2 3 2 1 10 1 3 1 10 1 10 1 5 5 5 1 1 3 2 1 5 1 1 1 5 3 1 1 10 10 3 1 1 5 1 1 1 2 2 5 10 1 2 10 1 1 10 1 2 10 2 1 1 1 5 1 2 1 5 10 1 5 1 2 1 1 1 1 1 3 1" | tr " " "\n" | sort | uniq -c | sed "s_  *__" | sed "s_ _:_" | tr "\n" " " 
 
immernoch falschrum, wobei der Teil mit sed auch noch schöner geht, aber das überlass ich gerne anderen (Meillo? :mrgreen: )
... da wird gleich nach dem Meillo gerufen, dabei lieferst du am Ende deines Posts selber schon die Variante, die ich vorschlagen wuerde. :facepalm: ;-)

Btw: Man kann mehrere sed-Befehle strichpunktgetrennt in einen Aufruf schreiben.

Btw2: Im ersten sed-Befehl solltest du einen Zeilenanfangs-Anker setzen ... der erleichtert auch das Verstehen des Befehls.
Fürs Umdrehen der key:value Paare fällt mir nur ne Lösung mit awk ein, falls jemand noch was anderes kennt, würde mich interessieren.
Sed kann das schon auch (woran du bestimmt nur nicht gedacht hast):

Code: Alles auswählen

sed 's/\(.*\):\(.*\)/\2:\1/'
Aber wenn man awk eh schon bemüht, dann kann man auch gleich dessen Arrays nehmen:

Code: Alles auswählen

 echo "1 3 1 10 2 2 2 1 1 1 1 2 1 1 1 1 1 5 1 2 1 1 1 3 1 10 3 1 2 3 2 1 10 1 3 1 10 1 10 1 5 5 5 1 1 3 2 1 5 1 1 1 5 3 1 1 10 10 3 1 1 5 1 1 1 2 2 5 10 1 2 10 1 1 10 1 2 10 2 1 1 1 5 1 2 1 5 10 1 5 1 2 1 1 1 1 1 3 1" | tr " " "\n"   |awk '{arr[$1] =arr[$1]+1 } END { for (key in arr) { printf ( key ":" arr[key] ) " " }}'
Diese Variante bewerte ich so wie du auch in der folgenden Zeile: nicht unbedingt die beste oder lesbarste.
oder besser/kürzer/lesbarer

Code: Alles auswählen

echo "1 3 1 10 2 2 2 1 1 1 1 2 1 1 1 1 1 5 1 2 1 1 1 3 1 10 3 1 2 3 2 1 10 1 3 1 10 1 10 1 5 5 5 1 1 3 2 1 5 1 1 1 5 3 1 1 10 10 3 1 1 5 1 1 1 2 2 5 10 1 2 10 1 1 10 1 2 10 2 1 1 1 5 1 2 1 5 10 1 5 1 2 1 1 1 1 1 3 1" | tr " " "\n" | sort | uniq -c  | awk -F " " '{printf $2 ":"$1 " "}'  
So wuerde ich es auch machen:

Code: Alles auswählen

echo "1 3 1 10 2 2 2 1 1 1 1 2 1 1 1 1 1 5 1 2 1 1 1 3 1 10 3 1 2 3 2 1 10 1 3 1 10 1 10 1 5 5 5 1 1 3 2 1 5 1 1 1 5 3 1 1 10 10 3 1 1 5 1 1 1 2 2 5 10 1 2 10 1 1 10 1 2 10 2 1 1 1 5 1 2 1 5 10 1 5 1 2 1 1 1 1 1 3 1" | tr " " "\n" | sort | uniq -c | awk '{printf("%s:%s ", $2, $1)}'
Die verbleibende Unschoenheit ist der abschliessende Space und das fehlende Newline. Je nach Anwendungsfall waere mir das egal oder ich wuerde noch daran rumoptimieren. Andererseits waere es eigentlich schoener, wenn die Daten zeilenweise und nicht hintereinander ausgegeben werden wuerden ... das waere jedenfalls unixartiger, weil passender zu anderen Tools, einfacher verarbeitbar. Dazu muesste man aber natuerlich `barplot.sh' umschreiben.
Use ed once in a while!

Benutzeravatar
Henry57
Beiträge: 17
Registriert: 04.02.2020 16:06:23

Re: bash, Datenvisualisierung per Bar Graph

Beitrag von Henry57 » 10.07.2020 11:57:38

Meillo hat geschrieben: ↑ zum Beitrag ↑
10.07.2020 07:23:54

So wuerde ich es auch machen:

Code: Alles auswählen

echo "1 3 1 10 2 2 2 1 1 1 1 2 1 1 1 1 1 5 1 2 1 1 1 3 1 10 3 1 2 3 2 1 10 1 3 1 10 1 10 1 5 5 5 1 1 3 2 1 5 1 1 1 5 3 1 1 10 10 3 1 1 5 1 1 1 2 2 5 10 1 2 10 1 1 10 1 2 10 2 1 1 1 5 1 2 1 5 10 1 5 1 2 1 1 1 1 1 3 1" | tr " " "\n" | sort | uniq -c | awk '{printf("%s:%s ", $2, $1)}'
Die verbleibende Unschoenheit ist der abschliessende Space und das fehlende Newline. Je nach Anwendungsfall waere mir das egal oder ich wuerde noch daran rumoptimieren. Andererseits waere es eigentlich schoener, wenn die Daten zeilenweise und nicht hintereinander ausgegeben werden wuerden ... das waere jedenfalls unixartiger, weil passender zu anderen Tools, einfacher verarbeitbar. Dazu muesste man aber natuerlich `barplot.sh' umschreiben.
Wow. Als Echoausgabe funktioniert das schon mal sehr gut und gibt in etwa in der folgenden Form eine Ausgabe aus, die dem gesuchten Format Zahl:Häufigkeit entspricht.

Code: Alles auswählen

1:52 10:12 2:15 3:9 5:11
Die Übergabe der Daten in der folgenden Form ist mir bisher noch nicht gelungen

Code: Alles auswählen

# Werte zu Array hinzu fügen funktioniert
meinarray=( "${meinarray[@]}" "$funktion" )
echo ${meinarray[@]}
echo
echo

# das funktioniert
echo  gucken ob die gewünschten Daten bei mir im Array an kommen
echo ${meinarray[@]}
echo
echo

# die Übergabe der Daten des Arrays an die Zählfunktion funktioniert bei mir noch nicht, was wohl an meiner falschen Syntax liegt
echo $({meinarray[@]} | tr " " "\n" | sort | uniq -c | awk '{printf("%s:%s ", $2, $1)}')

# die folgende Variante, ohne die Daten mit einer gewünschten Variable zu übergeben, funktioniert wiederum bestens
echo gucken ob die Umwandlungsfunktion mit festen Beispieldaten funktioniert, # das funktioniert bei mir auch bestens
echo "1 3 1 10 2 2 2 1 1 1 1 2 1 1 1 1 1 5 1 2 1 1 1 3 1 10 3 1 2 3 2 1 10 1 3 1 10 1 10 1 5 5 5 1 1 3 2 1 5 1 1 1 5 3 1 1 10 10 3 1 1 5 1 1 1 2 2 5 10 1 2 10 1 1 10 1 2 10 2 1 1 1 5 1 2 1 5 10 1 5 1 2 1 1 1 1 1 3 1" | tr " " "\n" | sort | uniq -c | awk '{printf("%s:%s ", $2, $1)}'
echo
echo
Kann man die Ausgabe noch beispielsweise wie folgt aufsteigend ordnen

Code: Alles auswählen

1:52 2:15 3:9 5:11 10:12
Oder wie folgt absteigend ordnen

Code: Alles auswählen

10:12 5:11 3:9 2:15 1:52
Ideal wäre für mich, wenn man das wahlweise auf oder absteigend ordnen könnte.

Benutzeravatar
Meillo
Moderator
Beiträge: 8819
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: bash, Datenvisualisierung per Bar Graph

Beitrag von Meillo » 10.07.2020 12:23:37

Einfach wieder in Zeilen aufteilen (mit `tr'), dann durch `sort -n' bzw. `sort -nr' pipen, und wieder auf eine Zeile bringen (mit `tr').

Hier wird nun auch deutlich, warum zeilenweise Werte viel geschickter zu verarbeiten waeren als die Werte alle auf einer Zeile.
Use ed once in a while!

Benutzeravatar
Henry57
Beiträge: 17
Registriert: 04.02.2020 16:06:23

Re: bash, Datenvisualisierung per Bar Graph

Beitrag von Henry57 » 10.07.2020 13:22:31

Meillo hat geschrieben: ↑ zum Beitrag ↑
10.07.2020 12:23:37
Einfach wieder in Zeilen aufteilen (mit `tr'), dann durch `sort -n' bzw. `sort -nr' pipen, und wieder auf eine Zeile bringen (mit `tr').

Hier wird nun auch deutlich, warum zeilenweise Werte viel geschickter zu verarbeiten waeren als die Werte alle auf einer Zeile.
Bisher scheitere ich sogar an der Übergabe der aus einer externen Quelle stammenden Werte an die Formatänderungsroutine:

Code: Alles auswählen

# das funktioniert
# Werte zu Array hinzu fügen
meinarray=( "${meinarray[@]}" "$funktion" )
echo ${meinarray[@]}
echo
echo

# das funktioniert
echo  gucken ob die gewünschten Daten bei mir im Array an kommen
echo ${meinarray[@]}
echo
echo

# die Übergabe der Daten des Arrays an die Zählfunktion funktioniert bei mir noch nicht, was wohl an meiner falschen Syntax liegt
echo "$({meinarray[@]} | tr " " "\n" | sort | uniq -c | awk '{printf("%s:%s ", $2, $1)}')"
echo
echo
Ich erhalte hierbei folgende Fehlermeldung:

Code: Alles auswählen

 {meinarray[@]}: Kommando nicht gefunden.

tobo
Beiträge: 2010
Registriert: 10.12.2008 10:51:41

Re: bash, Datenvisualisierung per Bar Graph

Beitrag von tobo » 10.07.2020 13:32:39

Das $-Zeichen fehlt bei {meinarray[@]}.

Code: Alles auswählen

echo "$(${meinarray[@]} | tr...

Benutzeravatar
Meillo
Moderator
Beiträge: 8819
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: bash, Datenvisualisierung per Bar Graph

Beitrag von Meillo » 10.07.2020 14:10:03

Werte auf einer Zeile zu separaten Zeilen:

Code: Alles auswählen

... | tr ' ' '\n'
Werte von separaten Zeilen zu einer Zeile:

Code: Alles auswählen

... | tr '\n' ' '
(Ob Single-Quotes oder Double-Quotes ist hier egal.)

Mit diesen zwei Befehlen kannst du hin und her wechseln. Einfach mit Pipe-Symbolen (`|') getrennt in die Pipeline einfuegen.

Dein Bargraph-Script braucht die Werte auf einer Zeile. Sort braucht sie auf separaten Zeilen.
Use ed once in a while!

Benutzeravatar
Henry57
Beiträge: 17
Registriert: 04.02.2020 16:06:23

Re: bash, Datenvisualisierung per Bar Graph

Beitrag von Henry57 » 10.07.2020 16:10:42

tobo hat geschrieben: ↑ zum Beitrag ↑
10.07.2020 13:32:39
Das $-Zeichen fehlt bei {meinarray[@]}.

Code: Alles auswählen

echo "$(${meinarray[@]} | tr...
In der folgenden Variante bekomme ich ein "Zeile 15: 1: Kommando nicht gefunden."

Code: Alles auswählen

#!/bin/bash
# Wahl des Interpreters

# geht
# Array füllen
meinarray="1 3 1 10 2 2 2 1 1 1 1 2 1 1 1 1 1 5 1 2 1 1 1 3 1 10 3 1 2 3 2 1 10 1 3 1 10 1 10 1 5 5 5 1 1 3 2 1 5 1 1 1 5 3 1 1 10 10 3 1 1 5 1 1 1 2 2 5 10 1 2 10 1 1 10 1 2 10 2 1 1 1 5 1 2 1 5 10 1 5 1 2 1 1 1 1 1 3 1"

# geht
# gucken ob Inhalt im Aray an gekomen ist
echo ${meinarray[@]}
echo
echo

# bringt "Zeile 15: 1: Kommando nicht gefunden."
echo "$(${meinarray[@]} | tr " " "\n" | sort | uniq -c | awk '{printf("%s:%s ", $2, $1)}')"

tobo
Beiträge: 2010
Registriert: 10.12.2008 10:51:41

Re: bash, Datenvisualisierung per Bar Graph

Beitrag von tobo » 10.07.2020 16:27:13

Ja, da habe ich wohl nicht ganz aufgepasst (echo und Quoting angepasst):

Code: Alles auswählen

echo "$(echo "${meinarray[@]}" | tr " " "\n" | sort | uniq -c | awk '{printf("%s:%s ", $2, $1)}')"
EDIT: Und nochmal das Quoting editiert.
EDIT2: Und nochmal das Quoting editiert.
EDIT3: Code aus vorhergehenden Beiträgen ergänzt

Code: Alles auswählen

echo "$(echo "${meinarray[@]}" | tr " " "\n" | sort | uniq -c | sed -r 's/ *(.*) (.*)/\2:\1/' | sort -n | tr "\n" " ")"
Sortierrichtung mittels "sort -n" vs. "sort -nr" und die tr-pipe danach macht wieder Zeilen- anstelle Spaltenform.

Benutzeravatar
Henry57
Beiträge: 17
Registriert: 04.02.2020 16:06:23

Re: bash, Datenvisualisierung per Bar Graph

Beitrag von Henry57 » 10.07.2020 19:57:36

tobo hat geschrieben: ↑ zum Beitrag ↑
10.07.2020 16:27:13
Ja, da habe ich wohl nicht ganz aufgepasst (echo und Quoting angepasst):

Code: Alles auswählen

echo "$(echo "${meinarray[@]}" | tr " " "\n" | sort | uniq -c | awk '{printf("%s:%s ", $2, $1)}')"
EDIT: Und nochmal das Quoting editiert.
EDIT2: Und nochmal das Quoting editiert.
EDIT3: Code aus vorhergehenden Beiträgen ergänzt

Code: Alles auswählen

echo "$(echo "${meinarray[@]}" | tr " " "\n" | sort | uniq -c | sed -r 's/ *(.*) (.*)/\2:\1/' | sort -n | tr "\n" " ")"
Sortierrichtung mittels "sort -n" vs. "sort -nr" und die tr-pipe danach macht wieder Zeilen- anstelle Spaltenform.
Wow. es funktioniert bestens. Ich bin immer wieder überrascht was andere so in Bash hin bekommen. Das spornt mich an, mich selbst auch weiter daran zu versuchen. Besten Dank.

eggy
Beiträge: 3331
Registriert: 10.05.2008 11:23:50

Re: bash, Datenvisualisierung per Bar Graph

Beitrag von eggy » 11.07.2020 00:58:21

Meillo hat geschrieben: ↑ zum Beitrag ↑
10.07.2020 07:23:54
... da wird gleich nach dem Meillo gerufen
nach wem denn sonst ? :mrgreen:
Meillo hat geschrieben: ↑ zum Beitrag ↑
10.07.2020 07:23:54
Btw: Man kann mehrere sed-Befehle strichpunktgetrennt in einen Aufruf schreiben.
sollte vermutlich auch schneller sein
Meillo hat geschrieben: ↑ zum Beitrag ↑
10.07.2020 07:23:54
Fürs Umdrehen der key:value Paare fällt mir nur ne Lösung mit awk ein, falls jemand noch was anderes kennt, würde mich interessieren.
Sed kann das schon auch (woran du bestimmt nur nicht gedacht hast):
Stimmt, sed hab ich für sowas (mal wieder :oops:) nicht auf dem Schirm gehabt.
Aber eigentlich hab ich eher sowas wie cut gesucht, aber das kann ja leider kein -f 3,2 bzw macht daraus dann nur -f 2,3.
Also falls jemand noch was aus Richtung coreutils etc kennt, sagt mal bitte Bescheid.

@Henry57: btw kennst du braillegraph schon?

Antworten