mit grep mehrere zeilen auslesen

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von bloody.bay, 21.09.2007.

  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

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    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 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
     
  7. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  8. 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.......
     
  9. #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. unix grep mehr zeilen anzeigen

    ,
  4. unix grep für 2 Zeilen,
  5. mit grep mehrere Ihnahlte auslesen,
  6. perl mehrere zeilen,
  7. grep alle zeilen mit bestimmten test in datei speichern,
  8. sed mehrere mac adresse ,
  9. linux grep mehere zeilen anzeigen,
  10. unix sed datei suchen zeilen danach ausgeben,
  11. grep mehre zeilen,
  12. grep zeilen danach,
  13. grep zeile,
  14. grep zeilen davor,
  15. grep text aus zeile auslesen,
  16. awk zeilen auslesen,
  17. linux grep mehrere zeilen,
  18. solaris grep zeilen vorher,
  19. der server hat passwort umgendet was tun?
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. 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....
  3. 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...
  4. KWin 4.90.1 wartet auf Bugreports

    KWin 4.90.1 wartet auf Bugreports: Martin Gräßlin, Maintainer des KDE-Fenstermanagers, hat den Code für KWin/5 als für gut genug befunden, um ihn im erweiterten Kreis testen zu...
  5. grep Ausgabe an ls übergeben

    grep Ausgabe an ls übergeben: Kann ich die Ausgabe von grep (es sind dateinamen des lokalen verzeichnisses) irgendwie gleich weiterpipen zu ls? Also so das ich zu den...