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. #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.
     
  3. #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
     
  4. #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
     
  5. lau.bi

    lau.bi Grünschnabel

    Dabei seit:
    29.04.2010
    Beiträge:
    1
    Zustimmungen:
    0
    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
     
  6. 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.......
     
  7. #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. Grep ersten 3 zeilen#

    ,
  3. grep ersten 10 zeilen anzeigen

    ,
  4. sed regex mehrere zeilen ausgeben,
  5. linux grep zeile auslesen,
  6. grep unix von zeile bis zeile,
  7. grep über mehrere zeilen,
  8. grep 2 zeilen auslesen,
  9. grep linux mehrere zeilen,
  10. grep über mehere zeilen suchen,
  11. grep mehrer zeilen suchen,
  12. grep von bis,
  13. grep uns 3 weitere zeilen ausgeben,
  14. grep zeilen vorher ausgeben,
  15. grep suche nach string und zeilen danach,
  16. mit grep nach einer Zeile suchen und 4 folgende mit ausgeben,
  17. grep suche zeilen danach,
  18. grep parameter zeile danach,
  19. mehrere files einlesen shell linux,
  20. grep v response,
  21. unix grep mehr als eine zeile,
  22. grep 2 zeilen,
  23. grep anzahl der Zeilen angeben,
  24. script grep zeilen,
  25. unix grep mehr zeilen anzeigen
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. 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...
  3. grep + regex zum Log parsen

    grep + regex zum Log parsen: Hi zusammen, ich möchte ein Logfile gerne auf eine Stringkombination durchsuchen. D.h. im Log steht sowas wie: 2016-12-20 10:10:43 ETL started :...
  4. Kurztipp: Unerwünschte grep-Ausgaben vermeiden

    Kurztipp: Unerwünschte grep-Ausgaben vermeiden: Selbst aus altbekannten Programmen kann man oft noch einiges mehr herausholen - man muss sich nur einmal gründlich mit ihnen auseinandersetzen....
  5. GNU Grep 2.19 freigegeben

    GNU Grep 2.19 freigegeben: Von dem Textsuchprogramm GNU Grep ist jetzt Version 2.19 erschienen, die um durchschnittlich zehn Prozent schneller als die Vorgängerversion...