2 Spalten in EINER Textdatei GETRENNT addieren

Diskutiere 2 Spalten in EINER Textdatei GETRENNT addieren im Shell-Skripte Forum im Bereich Programmieren unter Linux/Unix; Hey, bin ein ziemlicher Neuling in Sachen programmieren. Nun steh ich vor dem Problem, dass ich 2 Zahlenspalten inner Textdatei (vim) getrennt...

  1. Nicho

    Nicho Jungspund

    Dabei seit:
    03.02.2017
    Beiträge:
    12
    Zustimmungen:
    0
    Hey,
    bin ein ziemlicher Neuling in Sachen programmieren. Nun steh ich vor dem Problem, dass ich 2 Zahlenspalten inner Textdatei (vim) getrennt addieren muss. Diese sind durch ein "/" getrennt.
    Bsp.:
    72 / 72
    68 / 72
    72 / 72
    0 / 24
    usw.
    Waere nett wenn ihr paar Vorschlaege habt. Bei meinem Skript (
    { while read zahl
    do
    x=$(($x+$zahl))
    done
    echo $x >Auslastung2
    } addiert er irgendwie nur eine Spalte.
    Vg Nico
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. T-One

    T-One Routinier

    Dabei seit:
    14.10.2008
    Beiträge:
    492
    Zustimmungen:
    7
    Ort:
    Österreich
    Sobald du Spaltenabhängig rechnen musst, ist awk ganz fein:

    awk -F '/' '{sum1 += $1; sum2 += $2} END {print sum1,sum2}' inputfile.txt


    -F ist der fielseperator also /.
    Dann kommt die Anweisung für sum1, also alles in spalte $1 zusammenzählen, selbiges für sum2.
    Dann kommt die END-Regel, damit nur ganz am schluss ein print von sum1 und 2 gemacht wird, ansonsten bekommst du alle Zwischenergebnisse ausgeworfen.


    Wirft dann
    212 240
    aus.
     
    Nicho gefällt das.
  4. Nicho

    Nicho Jungspund

    Dabei seit:
    03.02.2017
    Beiträge:
    12
    Zustimmungen:
    0
    Vielen herzlichen dank ;0 klappt so wie ichs wollte, noch ne frage falls du zufaellig zeit hast, wenn net stoeber ich noch bissl in google, und zwar:
    der hat ja jetze in meinem beispiel 212 240 ausgeworfen (in meiner datei 16786 19400) wie koennte man das jetzt asugeben lassen das er das in % angibt (also wieviel % sind 212 von 240 ////// 16786 von 19400)
     
  5. #4 hellfire, 03.02.2017
    hellfire

    hellfire Foren As

    Dabei seit:
    25.05.2016
    Beiträge:
    76
    Zustimmungen:
    10
    geht alles:

    Code:
    awk -F/ '{s1+=$1;s2+=$2} END { printf "summe1: %s summe2 %s prozent: %6.2f\n",s1,s2,s1/s2*100}' datei.txt
     
    Nicho gefällt das.
  6. T-One

    T-One Routinier

    Dabei seit:
    14.10.2008
    Beiträge:
    492
    Zustimmungen:
    7
    Ort:
    Österreich
    Easy:

    awk -F '/' '{sum1 += $1; sum2 += $2} END {perc=sum1/sum2*100; print perc}' input.txt
     
    Nicho gefällt das.
  7. Nicho

    Nicho Jungspund

    Dabei seit:
    03.02.2017
    Beiträge:
    12
    Zustimmungen:
    0
    Ist jetzt so das ich dann statt '{print sum1 .. und sum 2 bla bla geschrieben hab,(da ich textausgabe machen muss)
    {print "Es sind " sum2 " " sum1 " Slots belegt." }'
    und dann moechte ich noch dahinte die prozentausgabe haben, inder art wie hier:
    awk '{print "Das sind blablub%}'
    braeuchte dafuer nur die rechnung
     
  8. T-One

    T-One Routinier

    Dabei seit:
    14.10.2008
    Beiträge:
    492
    Zustimmungen:
    7
    Ort:
    Österreich
    Machst den Prozentteil nach vorne, am Schluss kannst alles Ausgeben wie du willst.

    awk -F '/' '{sum1 += $1; sum2 += $2; perc=sum1/sum2*100} END {print sum1,sum2,perc}' inputfile.txt
     
    Nicho gefällt das.
  9. Nicho

    Nicho Jungspund

    Dabei seit:
    03.02.2017
    Beiträge:
    12
    Zustimmungen:
    0
    Ok habe jetzt:
    awk -F '/' '{sum1 += $2; sum2 += $3} END {print "Es sind " sum2 " " sum1 " Slots belegt." " Das sind " sum1/sum2*100"%" }'.
    Da springt dann 95,...% raus. Die Zahlen waren 18538/19400 sind da 95% nicht bissl viel?
     
  10. Nicho

    Nicho Jungspund

    Dabei seit:
    03.02.2017
    Beiträge:
    12
    Zustimmungen:
    0
    Ok geht klar hab alles, Danke fuer die Hilfe. :)
     
  11. T-One

    T-One Routinier

    Dabei seit:
    14.10.2008
    Beiträge:
    492
    Zustimmungen:
    7
    Ort:
    Österreich
    Rechne es aus, das bekommst jetzt schon hin oder? :)

    Stimmt aber...
     
  12. Nicho

    Nicho Jungspund

    Dabei seit:
    03.02.2017
    Beiträge:
    12
    Zustimmungen:
    0
    Jojo is alles perfekt, danke fuer deine Zeit und Hilfe ;D
     
  13. Nicho

    Nicho Jungspund

    Dabei seit:
    03.02.2017
    Beiträge:
    12
    Zustimmungen:
    0
    Doch noch was, sry ;D, also ich hab ja das Programm oben schon hingeschrieben, (hier nochmal)
    awk -F '/' '{sum1 += $2; sum2 += $3} END {print "Es sind " sum1 " von " sum2 " Slots belegt." " Das sind " sum1/sum2*100"%" }'
    Da kommt aber irgendwie 95% und noch 4 kommastellen raus, ich vermute da sind tausende kommmastellen und er rundet es selbst auf 4, wie kann ich es nun asugeben lassen dass er mir nur ne gerunde zahl ohne komma, also z.B. wenns 95,643* ist dass er nur 96 ausgibt?
     
  14. T-One

    T-One Routinier

    Dabei seit:
    14.10.2008
    Beiträge:
    492
    Zustimmungen:
    7
    Ort:
    Österreich
    Kleiner tipp noch.

    Mach die % besser so perc=(sum1*100)/sum2, ist in Bezug auf Floating-Point-Genauigkeit der bessere weg, sonst könnten es eher seltsame Nachkommastellen geben.
     
    Nicho gefällt das.
  15. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  16. Nicho

    Nicho Jungspund

    Dabei seit:
    03.02.2017
    Beiträge:
    12
    Zustimmungen:
    0
    Und wie runde ich das ergebnis dann?
     
  17. T-One

    T-One Routinier

    Dabei seit:
    14.10.2008
    Beiträge:
    492
    Zustimmungen:
    7
    Ort:
    Österreich
    awk -F '/' '{sum1 += $1; sum2 += $2; perc=(sum1*100)/sum2} END {printf "%s von %s prozent: %.0f %",sum1,sum2,perc}'

    Da brauchst du dann printf um im print die kommastellen anzugeben %.0f
     
Thema:

2 Spalten in EINER Textdatei GETRENNT addieren

Die Seite wird geladen...

2 Spalten in EINER Textdatei GETRENNT addieren - Ähnliche Themen

  1. spalten einer csv-Liste filtern

    spalten einer csv-Liste filtern: Hallo Kommandozeilen-Liebhaber, ich bin ziemlich neu im shell-scripting, daher gibt's womöglich 'ne ganz einfache aber mir nicht bekannte...
  2. Fedora-Entwickler möchte Systemd erneut aufspalten

    Fedora-Entwickler möchte Systemd erneut aufspalten: Der Fedora-Entwickler Zbigniew JÄ™drzejewski-Szmek, der unter anderem Co-Maintainer von Systemd für die Distribution ist, hat für Fedora 22 einen...
  3. Jede n-te Spalte auslesen, bzw bestimmte Spalten ausschließen

    Jede n-te Spalte auslesen, bzw bestimmte Spalten ausschließen: Moin, habe ne Datei von der ich nur jede n-te spalte auslesen möchte, bzw löschen möchte (konstant jede dritte Spalte soll raus um genau zu sein)....
  4. Artikel: 960-Grid-System - Eine CSS-Bibliothek für Spaltenlayouts

    Artikel: 960-Grid-System - Eine CSS-Bibliothek für Spaltenlayouts: Das Internet und dessen primär HTML-basierter Inhalt ist heute allgegenwärtig. Dem Einstellen von eigenen Inhalten stehen dabei keine...
  5. Spaltenweise Zeichen hinzufügen (sed? / awk?)

    Spaltenweise Zeichen hinzufügen (sed? / awk?): Hallo, kann mir bitte jemand bei folgendem Fall helfen: Habe eine Datei mit mehreren Spalten in denen beliebige Zahlenwerte stehen. Jetzt...