Anzeige:
Ergebnis 1 bis 6 von 6

Thema: bash: von jeder zeiler alle zahlen zw xy und xy addiern

  1. #1
    Registrierter Benutzer
    Registriert seit
    20.08.2005
    Beiträge
    14

    bash: von jeder zeiler alle zahlen zw xy und xy addiern

    seas;
    gleich mal vorweg: bin noch ein kleiner linux-neuling! skripte erstellen find ich äußerst praktisch nur hab ich mir leider ein nicht sehr gutes buch dazu gekauft. (bash 3.0 ge-packt heißt es) - hab mir mittlerweile andere bestellt nur sind die noch am weg und ich bräuchte dringend ein skript das folgendes bewerkstelligen kann:

    ich habe einen ordner mit ca. 50 dateien.
    aus diesen dateien les ich mal alle zeilen die 'GS' enthalten wie folgt aus: sed -ne '/GS/p' *
    nun möchte ich aus dieser liste (so ca. 2000 zeilen oder so) alle zahlen die zwischen dem ersten 'GS ' und dem zweiten ' GS' in der zeile stehen auslesen und einfach zusammenrechnen. (nach dem ersten gs ist ein leerzeichen und vor dem zweiten is auch eins!)

    die zeilen sehen ca. so aus:

    Code:
     testetest +1    (10)       510 GS  460 GS
            halihaloo (AB) +1   100% (9)        510 GS  460 GS
    hihi; was los? (333)       132 GS  150 GS
    die zahl 280 möcht ich hier auslesen       264 GS  280 GS
        in dieser zeile brächt ich die zahl 260!       264 GS  260 GS
    nur wie mach ich das ganze? ich dachte mir das müste irgendwie mid sed gehen. nur mit den internet tuturials komm ich nicht weiter und das bestellte buch kommt erst nächste woche
    kann mir da irgendjemand helfen?

    cu
    CHristoph

  2. #2
    Registrierter Benutzer Avatar von klewan
    Registriert seit
    06.05.2005
    Ort
    Wien
    Beiträge
    99
    Code:
    cat 1.txt |awk '{sum +=$(NF-1) } END {print sum}'

  3. #3
    Registrierter Benutzer
    Registriert seit
    20.08.2005
    Beiträge
    14
    Zitat Zitat von klewan
    Code:
    cat 1.txt |awk '{sum +=$(NF-1) } END {print sum}'
    wow! versteh zwar !!noch!! kein wort von dem was da oben steht, aber es funktioniert.
    ich befürchte ja das ich awk sowieso nie kapieren werde. kann ich mit sed eg auch alles machen was man mit awk machen kann?
    danke für die schnelle hilfe.

    cu
    CHristoph

  4. #4
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    Zitat Zitat von zaunmayrchris
    ich befürchte ja das ich awk sowieso nie kapieren werde. kann ich mit sed eg auch alles machen was man mit awk machen kann?
    Nein, natürlich kann sed nicht alles was awk kann - sonst gäbe es das wohl nicht
    Awk kann gewisse Sachen einfach sehr gut - insbesondere die Verarbeitung von sich wiederholenden gleich aufgebauten Datensätzen. Ausserdem ist es eine "richtige" Programmiersprache.

    Ich denke wenn du sed *wirklich* kapiert hast ist AWK ein Kinderspiel - vor allem weil die Befehle da nur das machen was du sagst und nicht ein "p" wie in Sed z.B. zwar den Pattern-Space ausgibt aber dann auch gleich bei der nächsten Zeile weiterfährt, was du eventuell nicht willst...

    MfG Peschmä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  5. #5
    Registrierter Benutzer
    Registriert seit
    26.12.2002
    Ort
    Matrix
    Beiträge
    194
    Zitat Zitat von klewan
    Code:
    cat 1.txt |awk '{sum +=$(NF-1) } END {print sum}'
    wobei bei der lösung zu beachten ist, dass immer das vorletzte feld addiert wird und nicht zwingend der wert, der zwischen den letzten beiden 'GS' steht.


    -j

  6. #6
    Registrierter Benutzer
    Registriert seit
    20.08.2005
    Beiträge
    14
    Zitat Zitat von Jasper
    wobei bei der lösung zu beachten ist, dass immer das vorletzte feld addiert wird und nicht zwingend der wert, der zwischen den letzten beiden 'GS' steht.
    ja ich weiß; aber das war genau was ich wollte (es is eh immer das vorletzte feld!
    so kam ich auch schnell drauf wie ich mal die 3. vorletzte spalte addiern kann!

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •