zeilen einer textdatei zusammen addieren

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von vaskadeluxe, 25.06.2007.

  1. #1 vaskadeluxe, 25.06.2007
    vaskadeluxe

    vaskadeluxe Grünschnabel

    Dabei seit:
    21.06.2007
    Beiträge:
    4
    Zustimmungen:
    0
    Hallo,

    ich habe folgendes Problem. Ich würde gerne aus einer textdatei alle Zeilen zusammen addieren zu einem Ergebnis.

    Beispiel: text.txt
    1
    2
    3
    4

    Ich brauche ein Kommando, was mir 1+2+3+4 zusammen rechnet.

    Kann mir jemand helfen.
     
  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. dizzgo

    dizzgo Lernbereite Riesenratte

    Dabei seit:
    04.08.2005
    Beiträge:
    573
    Zustimmungen:
    0
    Ort:
    /ch/sg///
    Versuchmal sowas:
    Code:
    cat text.txt | { while read zahl
    do
    x=$(($x+$zahl))
    done
    echo $x
    }
    
    Gruss
    d22
    //edit: vorrausgesetzt du benutz die 'bash' als Shell...
     
  4. #3 tuxlover, 25.06.2007
    tuxlover

    tuxlover Der den Tux knuddelt

    Dabei seit:
    26.10.2005
    Beiträge:
    2.106
    Zustimmungen:
    0
    Ort:
    berlin
    n*(n+1)/2 das hat auch schon der olle gauß gewußt
     
  5. #4 smg, 25.06.2007
    Zuletzt bearbeitet: 25.06.2007
    smg

    smg Regex Fetischist

    Dabei seit:
    20.05.2007
    Beiträge:
    195
    Zustimmungen:
    0
    Ort:
    /home/stephan/
    Code:
    awk '{sum+=$1}END{print sum}' foo.txt
    Code:
    perl -le '$sum+=$_ for <> ; print $sum;' foo.txt
     
  6. #5 vaskadeluxe, 26.06.2007
    vaskadeluxe

    vaskadeluxe Grünschnabel

    Dabei seit:
    21.06.2007
    Beiträge:
    4
    Zustimmungen:
    0

    Hallo dizzgo,

    das hat mir völlig ausgereicht. Vielen Dank.
     
  7. smg

    smg Regex Fetischist

    Dabei seit:
    20.05.2007
    Beiträge:
    195
    Zustimmungen:
    0
    Ort:
    /home/stephan/
    Sieht aber hässlich aus :P
     
  8. #7 tuxlover, 26.06.2007
    Zuletzt bearbeitet: 26.06.2007
    tuxlover

    tuxlover Der den Tux knuddelt

    Dabei seit:
    26.10.2005
    Beiträge:
    2.106
    Zustimmungen:
    0
    Ort:
    berlin
    andere möglichkeit. das sollte schneller gehen. einlesen der datei und heruasfinden wieviel zeilen den text hat. Ein bisschen Kreativität ist hier schon gefragt. Dann kannst du dass Script villeicht so schreiben:


    Code:
    #!/bin/bash
    N:=$(wc -l <Datei>)
    SUM=$(($N*($N+1)/2))
    echo $SUM
    exit 0
    
    möglicherweise hapert es aber noch bei einigen kleinigkeiten, die dir nochmal anschauen musst.

    das meinte ich, als ich dir den hinweis oben gegeben habe.
     
  9. L0rd

    L0rd Mitglied

    Dabei seit:
    28.04.2006
    Beiträge:
    38
    Zustimmungen:
    0
    Hallo,

    meine txt Datei sieht aber so aus:

    -7.41
    17.28

    also Gleitkomma und ich habe mir folgendes angepasst :) ich muss noch sagen dass ich Zeilen zähle um Durchschnitt zu bilden und die Lösung nicht gerade eleganteste ist, aber ich kriege Runtime error (func=(main), adr=9): Divide by zero

    -7.00
    5.00

    wenn ich den Code in eine script-Datei einfüge, wobei markiert und in die console eingefügt läuft der.




    also hier ist der Code
    Code:
    
    y=0;
    n=0;
    n=$(wc -l ausgabe3 | cut -d' ' -f1);
    for x in `cat ausgabe3 | cut -d. -f1`;
    do
    y=$((y+$x));
    done
    m=`echo "scale=2 ; $y/$n" | bc`;
    echo $m;
    
    was mache ich den falsch? und was könnte man eleganter machen ?

    Danke
     
  10. #9 Spröde, 12.10.2012
    Spröde

    Spröde Alter Sack

    Dabei seit:
    22.01.2012
    Beiträge:
    173
    Zustimmungen:
    0
    Code:
    ~> cat Test.txt
    -7.41
    17.28
    Code:
    #!/bin/bash
    l=0
    while read float; do
      [ $l = 0 ] && op="$float" || op="${op}+$float"
      ((l++))
    done <Test.txt
    echo "scale=2;(${op})/$l" | bc
    
     
  11. #10 tgruene, 13.10.2012
    tgruene

    tgruene Routinier

    Dabei seit:
    02.02.2012
    Beiträge:
    418
    Zustimmungen:
    0
    bash kann nur Ganzzahlarithmetik, keine floating points - deswegen musst Du dafuer auf bc (s. #9, Sproede) oder awk, perl,...(s.o.) benutzen.
     
  12. #11 Spröde, 13.10.2012
    Spröde

    Spröde Alter Sack

    Dabei seit:
    22.01.2012
    Beiträge:
    173
    Zustimmungen:
    0
    Das hat er wohl schon bemerkt, deswegen cuttet er die Nachkommastellen ab - um dann einen Durchschnitt mit 2 Kommastellen zu berechnen. Das Ganze ist so schräg, dass ich fast meinen Kaffee auf den Monitor gespuckt habe. :D

    Die Fehlermeldung: "Divide by zero" lässt vermuten, dass $n Null ist.



    Aus Spaß an der Freud, hier noch eine Bash-Bc-Lösung ohne Schleife:
    Code:
    a=($(<Test.txt));o=${a[*]};echo "scale=2;(${o// /+})/${#a[*]}" | bc
     
  13. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  14. #12 Gast123, 14.10.2012
    Gast123

    Gast123 Guest

    Noch eine Möglichkeit

    Skript sum.sh
    Code:
    #! /bin/bash
    
    SUM=0
    
    while read LINE; do
    	SUM="`echo "$SUM + $LINE" | bc -l`"
    done < $1
    
    echo $SUM
    Und dann
    Code:
    sum.sh /pfad/zur/datei
    MfG

    Schard
     
  15. L0rd

    L0rd Mitglied

    Dabei seit:
    28.04.2006
    Beiträge:
    38
    Zustimmungen:
    0
    Danke euch allen und besonders Spröde, Du hast es wirklich erkannt, dass ich nachkomma abschneide(müsse ich opfern). bc ist mir bekannt, konnte es aber nicht zweckgemäss implementieren. Bei dem Code den Du schreibst war es ein Kinderspiel für dich zu erkennen was ich ereichen wollte :)
     
Thema: zeilen einer textdatei zusammen addieren
Besucher kamen mit folgenden Suchen
  1. linux bc addieren zeile

    ,
  2. linux zahlen aus textfile lesen und mittelwert berechnen

    ,
  3. awk summe bilden

    ,
  4. bash zeilen zusammenrechnen,
  5. linux bc liste zusammenrechnen,
  6. java zeilen einer textdatei addieren,
  7. rechner der zahlen aus einer txt addiertt,
  8. bash summe bilden
Die Seite wird geladen...

zeilen einer textdatei zusammen addieren - Ähnliche Themen

  1. 2 Zeilen aus einer txt auslesen

    2 Zeilen aus einer txt auslesen: Hallo Leute, ich habe eine Datei die immer aus zwei zusammenhängenden Zeilen besteht, als Beispiel: DE0006231004 # 15,04 Infineon DE0005785604...
  2. Script um bestimme Zeilen einer Datei auszulesen

    Script um bestimme Zeilen einer Datei auszulesen: Hallo, ich habe u.g Textfile. Daraus möchte ich für jeden Block (Beginnend mit id) eine Zeile mit der id, dem namen und den 2-4 WWPN in eine...
  3. Letzten Zeilen einer Datei löschen

    Letzten Zeilen einer Datei löschen: Hallo Leute, ich habe eine riesige Datei (ca. 300 MB) und möchte die letzten Zeilen löschen. Leider kann man aufgrund der Größe der Datei diese...
  4. Zeichen an Zeilenanfang für bestimmten Zeilenbereich einfügen

    Zeichen an Zeilenanfang für bestimmten Zeilenbereich einfügen: Hallo, ich würde gerne in einem Textdokument, z.B. von Zeile 10 - 18, an den Zeilenanfang ein # einfügen. Habe mir schon diverse Seiten zu SED...
  5. Textdatei zeilenweise in durchnummerierte Variablen schreiben

    Textdatei zeilenweise in durchnummerierte Variablen schreiben: Hi Leute, ich versuche folgendes Problem zu lösen. Ich möchte eine Textdatei einlesen und den Inhalt jeder Zeile in immer eine neue Variable...