datei auslesen von bis

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von keek, 14.06.2010.

  1. keek

    keek BangBoomBang

    Dabei seit:
    14.06.2010
    Beiträge:
    18
    Zustimmungen:
    0
    Hallo
    ich bin neu hier.. also erst mal Hallo!!
    ich habe eine frage:
    wie kann ich aus einem log-file text blöcke aus lesen?
    also Beispiel:
    Code:
    2010-06-14 10:30:23,345 Error 
    bla bla
    bla bla
    bla bla
    2010-06-14 10:31:24,234 Error
    bla
    .....
    
    und jetzt möchte ich immer einen ganzen block auslesen (von [Datum /Uhrzeit] bis [vor nächstes [Datum/Uhrzeit]]).
    Das ganze sollte am besten in ein -tmp file gespeichert werden.
    ich habe an grep oder set gedacht.. komme aber nicht weiter

    freu mich auf ne antwort

    liebe grüße keek
     
  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. HBtux

    HBtux Linuxer

    Dabei seit:
    13.04.2010
    Beiträge:
    72
    Zustimmungen:
    0
    Ort:
    $HOME
    Nur ein Textblock oder alle in einer Datei vorkommenden Textblöcke.......
    (also quasi die gesamte Log-Datei verarbeiten)

    Wie sollen die Textdateien nachher heißen....?
    (vermutlich sollen diese dann das Datum im Dateinamen haben....)

    Kannst Du mal einen Ausschnitt aus einer originalen Logdatei mit 3-4 Textblöcken posten....
    (an echten Daten lässt sich die Aufgabe besser lösen.)
     
  4. keek

    keek BangBoomBang

    Dabei seit:
    14.06.2010
    Beiträge:
    18
    Zustimmungen:
    0
    Code:
    2010-06-13 22:44:37,663 ERROR [Connection.ReaderThread:Socket[addr=gdcentos5.index.de/10.54.48.115,port=33030,localport=40916]] (?:?) - send failed
    java.net.SocketException: Broken pipe
    	at java.net.SocketOutputStream.socketWrite0(Native Method)
    	at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
    	at java.net.SocketOutputStream.write(SocketOutputStream.java:136)
    	at sun.nio.cs.StreamEncoder$CharsetSE.writeBytes(StreamEncoder.java:336)
    	at sun.nio.cs.StreamEncoder$CharsetSE.implFlushBuffer(StreamEncoder.java:404)
    	at sun.nio.cs.StreamEncoder$CharsetSE.implFlush(StreamEncoder.java:408)
    	at sun.nio.cs.StreamEncoder.flush(StreamEncoder.java:152)
    	at java.io.OutputStreamWriter.flush(OutputStreamWriter.java:213)
    	at java.io.BufferedWriter.flush(BufferedWriter.java:230)
    2010-06-13 22:44:44,622 ERROR [Connection.ReaderThread:Socket[addr=gdcentos5.index.de/10.54.48.115,port=54775,localport=51151]] (?:?) - send failed
    java.net.SocketException: Broken pipe
    	at java.net.SocketOutputStream.socketWrite0(Native Method)
    	at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
    	at java.net.SocketOutputStream.write(SocketOutputStream.java:136)
    	at sun.nio.cs.StreamEncoder$CharsetSE.writeBytes(StreamEncoder.java:336)
    	at sun.nio.cs.StreamEncoder$CharsetSE.implFlushBuffer(StreamEncoder.java:404)
    	at sun.nio.cs.StreamEncoder$CharsetSE.implFlush(StreamEncoder.java:408)
    	at sun.nio.cs.StreamEncoder.flush(StreamEncoder.java:152)
    	at java.io.OutputStreamWriter.flush(OutputStreamWriter.java:213)
    	at java.io.BufferedWriter.flush(BufferedWriter.java:230)
    
    Das sind jetzt 2 so Blöcke.
    ich möchte nun daraus den ersten ERROR-Block auslesen und in eine [Datum&Uhrzeit].tmp datei packen. Dann den zweiten ERROR-Block in eine [Datum&Uhrzeit].tmp.. und so weiter..
    am schluss möchte ich eben von jedem ERROR-Block eine Datei haben.
     
  5. HBtux

    HBtux Linuxer

    Dabei seit:
    13.04.2010
    Beiträge:
    72
    Zustimmungen:
    0
    Ort:
    $HOME
    Code:
    [FONT="Courier New"]#!/bin/bash
    
    DATUM=""
    
    while read AKT_ZEILE; do
    
    case $AKT_ZEILE in
            [0-9][0-9][0-9][0-9]-[0-9][0-9]-*)
                    DATUM="`echo $AKT_ZEILE | cut -d' ' -f1-2 | sed -e 's/ /_/g;s/:/_/g;s/,/_/g'`"
                    echo $AKT_ZEILE >> $DATUM.tmp
                    ;;
    
            *)      if [ "$DATUM" != "" ]; then
                            echo $AKT_ZEILE >> $DATUM.tmp
                    fi
                    ;;
    
    esac
    
    done < lesedieseslogfile.log[/FONT]
    
     
  6. keek

    keek BangBoomBang

    Dabei seit:
    14.06.2010
    Beiträge:
    18
    Zustimmungen:
    0
    GENAU SOOO!!!

    Vielen Dank!!!
     
  7. keek

    keek BangBoomBang

    Dabei seit:
    14.06.2010
    Beiträge:
    18
    Zustimmungen:
    0
    Ich habe noch eine frage.
    Sie passt zu "sed" und "etwas aus einer Datei auslesen".
    Deshalb schreib ich gleich hier rein.

    Und zwar... ich habe folgendes File:

    Code:
    CentOS
     Error          30  | 33  | 33  | ende.aut.gdcentos5.error
     Warn	  20  | 20  | 20  | ende.aut.gdcentos5.warn
     Fatal	   0   | 0   | 0   | ende.aut.gdcentos5.fatal
    
    Fedora11
     Error         12   | 23   | 32   | ende.aut.gdfedora11.error
     Warn        13  | 46   | 23   | ende.aut.gdfedora11.warn
     Fatal	 45   | 45  | 45  | ende.aut.gdfedora11.fatal
    
    nun möchte ich beispielsweise die Zeile suchen in der "ende.aut.gdcentos5.warn" steht und da die letzte Zahl (also in diesem fall die 20) in eine Variable (bsp.:"Zahl") speichern.

    wie kann ich das machen?

    Danke schon mal im vorraus
     
  8. HBtux

    HBtux Linuxer

    Dabei seit:
    13.04.2010
    Beiträge:
    72
    Zustimmungen:
    0
    Ort:
    $HOME
    Code:
    grep "ende.aut.gdcentos5.warn" meinedatei.log | cut -d"|" -f3
    
     
  9. keek

    keek BangBoomBang

    Dabei seit:
    14.06.2010
    Beiträge:
    18
    Zustimmungen:
    0
    Sorry.. ich hab nich nich richtig ausgedrückt..
    und zwar habe ich in manchen Zeilen auch mehrere zahlen.
    mit
    Code:
    -f3
    fragst man ja die dritte Zahl ab.
    aber in manchen Zeilen gibt es auch mehrere zahlen.
    Ich brauch immer die letzte.

    aber danke schon mal für die antwort!
     
  10. keek

    keek BangBoomBang

    Dabei seit:
    14.06.2010
    Beiträge:
    18
    Zustimmungen:
    0
    okay.. habs raus gefunden.. durch deine idee..
    ist aber nicht sehr schön:

    grep "ende.aut.gdcentos5.warn" statistik.txt | rev | cut -d"|" -f2 | rev

    wenn du was schöneres hast, wär das besser
     
  11. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  12. #10 bytepool, 22.06.2010
    bytepool

    bytepool Code Monkey

    Dabei seit:
    12.07.2003
    Beiträge:
    791
    Zustimmungen:
    0
    Ort:
    /home/sweden/göteborg
    Hi,

    in der Annahme dass es immer das vorletzte Feld ist, und die Felder alle mit "|" getrennt sind, laesst sich das z.B. auch mit awk oder parameter expansion machen:

    Beispiel Zeile in foo:
    Code:
    $ foo=" Fatal 45   | 45  | 45  | ende.aut.gdfedora11.fatal"
    
    Mit awk das vorletzte Feld ausgeben:
    Code:
    $ echo $foo | awk -F'|' '{field=NF-1;print $field;}'
     45
    
    Mit parameter expansion erst alles vom Ende bis zum ersten "|" loeschen, und dann alles vom Anfang bis zum letzten "|":
    Code:
    $ bar=$(echo ${foo%\|*})
    $ echo $bar
    Fatal 45 | 45 | 45
    $ echo ${bar##*\|}
    45
    
    mfg,
    bytepool
     
  13. keek

    keek BangBoomBang

    Dabei seit:
    14.06.2010
    Beiträge:
    18
    Zustimmungen:
    0
    Jaa genau so!

    Vielen Dank!!
     
Thema:

datei auslesen von bis

Die Seite wird geladen...

datei auslesen von bis - Ähnliche Themen

  1. Datei auslesen und fund per MAil versenden.

    Datei auslesen und fund per MAil versenden.: Hallo folgendes Script habe ich zur Zeit in Arbeit. Und zwar führe ich über "at" ein kleines Script aus was in einem Logfile nach bestimmten...
  2. Dateien auslesen und Daten systematisch angeordnet in Datei ausgeben

    Dateien auslesen und Daten systematisch angeordnet in Datei ausgeben: Guten Abend, ich hätte da mal eine Frage. Bin mir recht sicher, dass es in der Shell funktionieren sollte, aber kenne mich damit kaum aus....
  3. ca. 1200 PDF-Dateien auslesen und bestimmte Daten in eine CSV-Datei speichern

    ca. 1200 PDF-Dateien auslesen und bestimmte Daten in eine CSV-Datei speichern: Hallo Leute, heute brauche ich mal einen dringenden Rat von Euch. Ich habe hier etwas mehr als 1200 PDF-Dateien (Text), die jeweils ein...
  4. Prblem mit zeilenweises auslesen von Datei und schreiben nach mysql

    Prblem mit zeilenweises auslesen von Datei und schreiben nach mysql: Hallo Eventuell kann mir jemand bei meinem Problem helfen. Ich habe mich irgendwie total verrannt und komme nicht weiter. Die folgende...
  5. Datei auslesen per Python (WLST)

    Datei auslesen per Python (WLST): Guten Abend, ich weiß nicht ob ich das hier posten kann - da WLST (WebLogic Scripting Tool) ja jetzt nicht so dazu gehört... Aber vielleicht...