mit grep mehrere zeilen auslesen

Diskutiere mit grep mehrere zeilen auslesen im Shell-Skripte Forum im Bereich Programmieren unter Linux/Unix; Hallo Community, bin neu hier und hab direkt mal ne frage: ich hab ne relativ große log-datei, aus der ich zeilen mit bestimmten kriterien...

  1. #1 bloody.bay, 21.09.2007
    bloody.bay

    bloody.bay Grünschnabel

    Dabei seit:
    21.09.2007
    Beiträge:
    2
    Zustimmungen:
    0
    Hallo Community,

    bin neu hier und hab direkt mal ne frage:

    ich hab ne relativ große log-datei, aus der ich zeilen mit bestimmten kriterien auslesen will

    das ganze sieht in etwa so aus (nur 1000e solcher datensätze):

    Code:
    09/20/2007 00:00:37 Sent accept response for user "MAC-ADRESSE" 
    to client "xxx.xxx.xxx.xxx"
    09/20/2007 00:00:37 Sending accounting response
    09/20/2007 00:00:37 Sending accounting response
    09/20/2007 00:00:46 Sending accounting response
    09/20/2007 00:00:46 Sending accounting response
    09/20/2007 00:02:22 _expandProfile: Config File 
    (/opt/funk/radius/flarionXml.ctrl) requires that XML profile file (demo.xml) 
    will be used for user ("MAC-ADRESSE")
    
    09/20/2007 00:00:37 Sent accept response for user "ANDERE MAC-ADRESSE" 
    to client "xxx.xxx.xxx.xxx"
    09/20/2007 00:00:37 Sending accounting response
    09/20/2007 00:00:37 Sending accounting response
    09/20/2007 00:00:46 Sending accounting response
    09/20/2007 00:00:46 Sending accounting response
    09/20/2007 00:02:22 _expandProfile: Config File 
    (/opt/funk/radius/flarionXml.ctrl) requires that XML profile file (demo.xml) 
    will be used for user ("ANDERE MAC-ADRESSE")
    
    mit dem kommando

    Code:
    Log=`grep "$Kartennummer" "./$Jahr$Monat$TagString.log"` 
    suche ich nach den zeilen mit "MAC-ADRESSE" , ich brauche aber auch die zeilen, die zwischen den der ersten und der letzten sind
    das ganze ist ein zusammenhängender Datensatz und soll dann in ein Logfile geschrieben werden

    in $Kartennummer steht die Mac-Adresse, die wird vorher aus einer Lookup-Table ausgelesn

    ./$Jahr$Monat$TagString.log ist immer die Logdatei vom aktuellen tag, die wird vom server so generiert, passt so

    hat jemand ne idee wie ich den kompletten datensatz so wie er oben steht als einen block in ein logfile schreiben kann?

    mit
    Code:
    echo "$Log" >> "./NAME_$Jahr$Monat$Tag.log"
    schreibe ich nur die 2 zeilen mit der Mac-Adresse in ein Logfile, und die dazwischen fehlen mir, die ich aber dazu brauche

    ich hab mir schon gedacht bei grep nach allen zeilen zu suchen die nicht die mac-adresse enthalten, aber das klappt nicht...
    es sind ja mehrere mac-adressen die den gleichen datensatz haben

    um hilfe wär ich seeeeehr dankbar :) :hilfe2:
     
  2. Anzeige

    Anzeige

    Wenn du mehr über Linux erfahren möchtest, dann solltest du dir mal folgende Shellkommandos anschauen.


    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 supersucker, 21.09.2007
    supersucker

    supersucker Foren Gott

    Dabei seit:
    21.02.2005
    Beiträge:
    3.873
    Zustimmungen:
    0
    Code:
    grep -A 10 -B 10 .....
    Mit den Parametern "-A" und "-B" kannst du die Anzahl der Zeilen angeben, die grep vor bzw. nach einem Treffer zusätzlich mit ausgeben soll.
     
  4. #3 bloody.bay, 21.09.2007
    bloody.bay

    bloody.bay Grünschnabel

    Dabei seit:
    21.09.2007
    Beiträge:
    2
    Zustimmungen:
    0
    ja soweit klar, aber die anzahl der zeilen davor bzw danach variieren...

    es können 2 sein, es können aber auch 9 sein, das ist mein problem =/
    hab ich unklar dargestellt sorry
     
  5. #4 Wolfgang, 24.09.2007
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Das Problem lässt sich so nicht mit grep lösen.
    Da musst du schon zu anderen Shellmitteln greifen.
    Entweder du baust dein grep in ein while read ein, und filterst darin weiter -> sehr uneffektiver Code,
    Oder du verwendest sed oder perl oder zur Not auch awk.

    Gruß Wolfgang
     
  6. lau.bi

    lau.bi Gast

    Hi,
    wenn auch veraltet, möchte ich dennoch eine Lösung für das Problem beisteuern:

    Geht eigentlich schon:

    MAXZEILEN=Maximale Zeilenzahl die Du erwartest
    suche="Deine MAC"
    filename="your logfile"

    # grep -A ${MAXZEILEN} "${suche}" ${filename} | grep -m 2 -B ${MAXZEILEN} "${suche}"

    Einzige Bedingung für jeden Suche gibt es nur einen Block.

    Gruß
    Laubi
     
  7. HBtux

    HBtux Linuxer

    Dabei seit:
    13.04.2010
    Beiträge:
    72
    Zustimmungen:
    0
    Ort:
    $HOME
    Und wann genau weißt Du, wieviele Zeilen Du drum herum brauchst...?

    Kann man das an einer bestimmten Zeichenkette festmachen, die nach der MAC-Adresse folgt.......
     
  8. #7 Gott_in_schwarz, 29.04.2010
    Gott_in_schwarz

    Gott_in_schwarz ar0

    Dabei seit:
    22.04.2007
    Beiträge:
    546
    Zustimmungen:
    0
    Ort:
    Niedersachsen
    Schau mal aufs Datum.
     
Thema: mit grep mehrere zeilen auslesen
Besucher kamen mit folgenden Suchen
  1. grep mehrere zeilen

    ,
  2. solaris grep zeile davor

    ,
  3. Grep ersten 3 zeilen#

    ,
  4. grepn mehrere zeilen,
  5. grep nach mehreren werten,
  6. grep speicheradresse,
  7. grep 2 zeilen ausgeben,
  8. grep linux zwei,
  9. unix erste zeilen von datei anzeigen,
  10. cat grep vorher zeilen,
  11. sed zeichenkette suchen und zeilen danach mit ausgeben,
  12. grep folgende 5 Zeilen nach treffer,
  13. grep wie viele zeilen,
  14. wie mit cygwin mehrere kommandps gleichzeitig grep,
  15. anzahl zeilen ausgeben unix,
  16. zeilen ausgeben unix,
  17. linux awk nur einen treffer anzeigen,
  18. zeilen suchen mit shell,
  19. ersten 5 zeilen ausgeben bei shell,
  20. grep mehreren files,
  21. indesign grep 3. zeile,
  22. unix shell zeilen verbinden tr,
  23. sed mehrere zeilen,
  24. grep aix,
  25. grep zeilen bis muster ausgeben
Die Seite wird geladen...

mit grep mehrere zeilen auslesen - Ähnliche Themen

  1. grep mehrere strings

    grep mehrere strings: hallo, ich schaue mit ps aux | grep prog ob ein prog läuft. wenn ich nach zwei programmen suche, dann nutze ich den grep-befehl eben...
  2. grep -p # Paragraph

    grep -p # Paragraph: Hallo, Unix grep -p findet auch innerhalb von Abschnitten/Absätzen/Blöcken, also mehreren Zeilen, die durch Leerzeilen getrennt sind und gibt...
  3. SED: eine Zeile mit einem Grep-Output ersetzen

    SED: eine Zeile mit einem Grep-Output ersetzen: Hallo Leute, ich bin kurz vor dem Ziel stecken geblieben. Wie im Titel geschrieben möchte ich in einer Datei eine bestimmte Zeile #18 mit dem...
  4. Frage zu Bash Script mit Grep Ausgabe

    Frage zu Bash Script mit Grep Ausgabe: Hallo Zusammen, ich schreibe gerade in Bash ein Script, mit dem ich eine Ausgabe per Grep filtere, nun ist es so - dass ich allerdings zwei...
  5. Textdatei filtern und löschen mit grep /sed

    Textdatei filtern und löschen mit grep /sed: Guten morgen liebe Forenmitglieder, da ich etliche Jahre in Sachen Linux pausiert habe und nun wegen beruflichem Wechsel wieder dort einsteige...
  1. Diese Seite verwendet Cookies um Inhalte zu personalisieren. Außerdem werden auch Cookies von Diensten Dritter gesetzt. Mit dem weiteren Aufenthalt akzeptierst du diesen Einsatz von Cookies.
    Information ausblenden