Variablen bzw. Strings aus Logfiles lesen

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von davinci80, 10.04.2007.

  1. #1 davinci80, 10.04.2007
    Zuletzt bearbeitet: 10.04.2007
    davinci80

    davinci80 Mitglied

    Dabei seit:
    03.04.2007
    Beiträge:
    25
    Zustimmungen:
    0
    Hallo zusammen ich brauche wieder eure :help:

    Aaalso,

    mein Skript liest momentan bestimmte Variablen aus und schreibt sie in eine Datei; nix Wildes.
    Aaaber, wie bringe ich dem Skript bei, dass wenn er eine bestimmte Variable herausliest dann soll er doch bitte an diese Variable Alles Weitere was dahinter ist auch auslesen, allerdings bis zu einem bestimmten String auslesen?

    BEISPIEL.: Lese var1=a in Datei 'x' aus, sobald Du 'var1' findest lese Alles Weitere aber auch heraus was sich noch hinter der 'var1' auch befindet, jedoch nur bis zum Zeichen 'f'.

    Skript:

    array[1]=4FBTCP000400
    array[2]=4FBTCP000500
    array[3]=4FBCHK000520
    array[4]=4FBNAV000050
    array[5]=4FBNAV000092
    array[6]=4FBCHK000512
    array[7]=4FBNAV000060
    array[8]=4FBNAV002200
    array[9]=4FBNAV000090
    array[10]=4FBCHK000611
    array[11]=4FBCHK000612
    array[12]=4FBNAV000092

    echo "Bitte geben Sie den Dateinamen ein: "
    read Dateiname
    echo "Bitte geben Sie den Namen der Zieldatei ein: "
    read Dateiname2

    typeset -i i=1
    while (( i <= 12 ))
    do
    zgrep ${array} $Dateiname >> $Dateiname2.csv
    i=i+1
    done
    echo
    echo "Die Logfileanalyse ist beendet. Das Ergebnis finden Sie in der Datei: $Dateiname2.csv"
    echo

    Vielen Dank!!!
     
  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 Wolfgang, 10.04.2007
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo
    Das kannst du leicht mit sed erledigen.

    Code:
    sed -ne '/pattern1/,/pattern2/p' input
    
    Schau mal in die Manpage von sed oder besuch eine der zahlreichen online HOWTO's zu sed:
    Hier eines von vielen in deutsch:
    http://www.tty1.net/sed-tutorium/html/

    Gruß Wolfgang
     
  4. #3 davinci80, 10.04.2007
    Zuletzt bearbeitet: 10.04.2007
    davinci80

    davinci80 Mitglied

    Dabei seit:
    03.04.2007
    Beiträge:
    25
    Zustimmungen:
    0
    Wo genau füge ich 'sed' im Skript ein?

    Danke!
    .
    .
    .
    EDIT (autom. Beitragszusammenführung) :
    .

    Hallo!

    Wie wird in einem Shell-Skript eine "leere Zeile" definiert
    z.Bsp.: lese solange aus der Datei xyz Alles heraus, bis eine leere Zeile in der Datei xyz auftauscht.
    Dies würde ich gerne in folgende while-Schleife implementieren:

    typeset -i i=1
    while (( i <= 11 ))
    do
    zgrep ${array} $Dateiname
    i=i+1
    done
    echo
    echo "Die Logfileanalyse ist beendet. Das Ergebnis finden Sie in der Datei: $Dateiname2.csv"
    echo
     
  5. #4 Wolfgang, 10.04.2007
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Warum erstellst du noch einen Thread?

    Einmal genügt vollkommen.

    Ein wenig Eigeninitiative ist hier auch nicht schlecht.

    Ich habe dich auf sed hingewiesen, hast du den Link gelesen?

    Gruß Wolfgang
     
  6. #5 davinci80, 10.04.2007
    davinci80

    davinci80 Mitglied

    Dabei seit:
    03.04.2007
    Beiträge:
    25
    Zustimmungen:
    0
    sed

    Ja, ich habe den Link mir angeschaut und auch Dinge ausprobiert!

    Das Problem ist nur, ich weiß nicht genau wie ich es ambesten umsetzen kann.
    Klar kann ich probieren, probieren und probieren, aber ich habe nicht die Zeit dafür weil es für meine Arbeit ist!

    In folgendem Skript,

    #!/bin/bash
    # Skript zur Analyse eines FzG_Betriebsdatenupdates
    # Das Skript dient ledeglich zur Analyse des tcpipserver_Logs der FgBZ.
    # Zudem, werden die Ausgaben des Skriptes in eine gewünschte Datei umgelenkt.

    array[1]=4FBTCP000400
    array[2]=4FBTCP000500
    array[3]=4FBCHK000520
    array[4]=4FBNAV000050
    array[5]=4FBNAV000092
    array[6]=4FBCHK000512
    array[7]=4FBNAV002200
    array[8]=4FBNAV000090
    array[9]=4FBCHK000611
    array[10]=4FBCHK000612

    echo "Bitte geben Sie den Dateinamen ein: "
    read Dateiname
    echo "Bitte geben Sie den Namen der Zieldatei ein: "
    read Dateiname2

    typeset -i i=1
    while (( i <= 10 ))
    do
    zgrep ${array} $Dateiname >> $Dateiname2.csv
    i=i+1
    done
    echo
    echo "Die Logfileanalyse ist beendet. Das Ergebnis finden Sie in der Datei: $Dateiname2.csv"
    echo "----------------------------------------------------------------------------------"
    echo

    sollen die o. g. Variablen bzw. arrays und was dahinter steht ausgelesen werden und in eine Datei (die der User angibt) umgelenkt werden.
    Soweit funktioniert das Skript.
    es gibt allerdings einen String der schaut so aus "4FBNAV000060" ab dem soll solange gelesen werden, bis dieser String "4FBTCP006520" im Logfile auftaucht. Zwischen diesen Beiden Strings (die immer am Anfang einer Zeile stehen) sollen die Einträge ausgelesen werden und in die Datei (siehe $Dateiname2.csv) umgelenkt werden.

    gerne würde ich mich damit länger beschäftigen und alleine ausprobieren, aber ich habe einfach keine Zeit dafür; LEIDER! :(

    Danke!!!

    :help:
     
  7. #6 Wolfgang, 10.04.2007
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo

    Das ist doch nicht so kompliziert wie es aussieht.
    Statt deinem zgrep pipe die Datei über zcat und sed in ein normales grep.

    Code:
    Statt
    zgrep ${array[i]} $Dateiname >> $Dateiname2.csv
    
    nun
    zcat Datei.gz|sed -ne '/4FBNAV000060/;/4FBTCP006520/p' |grep ...
    
    Allerdings geht das davon aus, dass die beiden Strings nur einmal vorkommen.

    Die andere Variante steht in deinem anderen Thead.

    Verwende eine Schleife und ein break, falls das Ende erreicht ist.

    Gruß Wolfgang
    PS 20€ von deinem Cheffe in die Boardkasse, für erledigte Arbeit. ;)
     
  8. #7 davinci80, 11.04.2007
    Zuletzt bearbeitet: 11.04.2007
    davinci80

    davinci80 Mitglied

    Dabei seit:
    03.04.2007
    Beiträge:
    25
    Zustimmungen:
    0
    hmmm

    Hi!

    Vielen Dank für Deine Hilfe,
    aber leider funktioniert es nicht.
    Ich weiß, dass ich etwas falsch mache, aber ich weiß nicht was.

    Wie gesagt, ich kenne mich zu wenig damit aus.
    Werde es weiter alleine probieren.

    Aber vielen vielen Dank! :))
    .
    .
    .
    EDIT (autom. Beitragszusammenführung) :
    .

    Hi!

    Habe festgestellt, dass dem System "zcat" Probleme bereitet.
    Er sagt, "No such file or directory" obwohl alles da ist und mein Ursprungsskript funktioniert ohne Probleme.

    Ich bin verzweifelt. ;(
     
  9. #8 supersucker, 11.04.2007
    supersucker

    supersucker Foren Gott

    Dabei seit:
    21.02.2005
    Beiträge:
    3.873
    Zustimmungen:
    0
    Ja, und wie soll dir mit dieser mageren Fehlerbeschreibung irgendjemand hier helfen können?

    Ist das alles so schwer?
     
  10. #9 Wolfgang, 11.04.2007
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo
    Dann entzip die Datei vorher mit gzip und verwende cat.

    Gruß Wolfgang
     
  11. #10 davinci80, 11.04.2007
    Zuletzt bearbeitet: 11.04.2007
    davinci80

    davinci80 Mitglied

    Dabei seit:
    03.04.2007
    Beiträge:
    25
    Zustimmungen:
    0
    Es...

    GEHT!!!!!!!!!! JAAAAAAAA!!!!
    Da blöde Ding versteht gzcat! :D

    THX!!!!!!!!!
    .
    .
    .
    EDIT (autom. Beitragszusammenführung) :
    .

    Hallo zusammen,

    mit welchem Befehl kann ich gleichzeitig in gezippten sowie nicht gezippten Datein nach Einträgen suchen?!

    :)
    .
    .
    .
    EDIT (autom. Beitragszusammenführung) :
    .

    Hallo zusammen,

    mit welchem Befehl kann ich gleichzeitig in gezippten sowie nicht gezippten Datein nach bestimmten Einträgen suchen?!

    In einem Verzeichnis sind gezippte und nicht gezippte Dateien
    und es sollen alle vom Skript nach bestimmten Einträgen durchsucht werden.
    Welchen Befehl nehme ich dafür, statt gzcat oder cat?!

    *Bitte nicht antworten, dass ich doch die gezippten Dateien woanders hinkopieren soll, das ist so gewollt*

    THX!!
     
  12. #11 Wolfgang, 11.04.2007
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo
    Dafür musst du dir schon eine Abfrage basteln.
    Code:
    
    TYP="$(file date|grep -o gzip )"
    
    if [ -z "$TYP" ]
    then
    echo "kein gzip"
    #command fuer text
    else 
    echo "File ist $TYP"
    #command fuer gzpfile.
    fi
    
    

    BTW von welcher shell und welchem OS reden wir hier überhaupt?
    Gruß Wolfgang
     
  13. #12 davinci80, 12.04.2007
    Zuletzt bearbeitet: 12.04.2007
    davinci80

    davinci80 Mitglied

    Dabei seit:
    03.04.2007
    Beiträge:
    25
    Zustimmungen:
    0
    Huch!

    Vielen Dank!

    Irgendwie funktioniert das noch nicht so richtig, aber ich gebe mit Mühe! :-)

    Übrigens, wofür steht das "grep -o"? Die grep-Referenz finde ich niergendswo...
    .
    .
    .
    EDIT (autom. Beitragszusammenführung) :
    .

    Hallo!

    Bei dem Kommando "grep -o" zeigt es mir folgende Ausgabe:

    grep: illegal option -- o
    Usage: grep -hblcnsviw pattern file . . .

    kannst Du mir Wolfgang sagen, was die Ursache dafür ist?

    Danke!!!
     
  14. #13 supersucker, 12.04.2007
    supersucker

    supersucker Foren Gott

    Dabei seit:
    21.02.2005
    Beiträge:
    3.873
    Zustimmungen:
    0
    Code:
    man grep
    in der Shell.
     
  15. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  16. #14 davinci80, 12.04.2007
    davinci80

    davinci80 Mitglied

    Dabei seit:
    03.04.2007
    Beiträge:
    25
    Zustimmungen:
    0
    gibet net!
     
  17. reni

    reni Guest

    http://unixhelp.ed.ac.uk/CGI/man-cgi?grep

    Und du solltest evt. mal Wolfgangs Frage beantworten:
    ;)
     
Thema:

Variablen bzw. Strings aus Logfiles lesen

Die Seite wird geladen...

Variablen bzw. Strings aus Logfiles lesen - Ähnliche Themen

  1. Teile von Strings in Variablen speichern.

    Teile von Strings in Variablen speichern.: Hallo, wie ihr seht, ich bin nicht gad der Hellste, was Unix angeht, aber deshalb arbeite ich ja daran ;) Mein aktuelles Problem sieht so...
  2. Linux 4.5 will UEFI-Variablen besser schützen

    Linux 4.5 will UEFI-Variablen besser schützen: Das Löschen bestimmter UEFI-Variablen kann manche Rechner nicht mehr startbar machen. Das kommende Linux 4.5 ergreift Maßnahmen dagegen, die im...
  3. 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...
  4. mysql Select Abfrageergebnis in unterschiedlichen Variablen sichern

    mysql Select Abfrageergebnis in unterschiedlichen Variablen sichern: Hallo zusammen, es geht um folgenden Teil meiner .sh-Datei: NumberCheck=`mysql $SQL_ARGS "SELECT lkw, Firma FROM adb_group WHERE...
  5. Teil einer Variablen auslesen und in neue Variable schreiben

    Teil einer Variablen auslesen und in neue Variable schreiben: Hallo, ist für Euch bestimmt ganz einfach, aber trotz googlen komme ich nicht auf eine Lösung. In Variable x habe ich stehen: xy,ab Nun möchte...