Daten aus Datei extrahieren



  • Hallo,

    ich habe unter Linux eine sehr grosse Log Datei (ca 1 GB), in der OpenGL Funkionsaufrufe stehen:

    trace.call: glClientActiveTexture(GL_TEXTURE1)
    trace.call: glDrawArrays(GL_TRIANGLES, 0, 2016)
    trace.call: glBindBuffer(GL_ARRAY_BUFFER, 0)
    trace.call: glScissor(100, 100, 100, 100)
    trace.call: glUseProgram(13)
    trace.call: glBindTexture(GL_TEXTURE_2D, 13)
    trace.call: glScissor(200, 200, 200, 200)
    trace.call: glBindBuffer(GL_ARRAY_BUFFER, 3)
    trace.call: glVertexPointer(3, GL_FLOAT, 0, 0x1d10)
    trace.call: glClientActiveTexture(GL_TEXTURE1)
    trace.call: glDrawArrays(GL_TRIANGLES, 0, 930)
    trace.call: glBindBuffer(GL_ARRAY_BUFFER, 0)
    trace.call: glScissor(100, 100, 100, 100)
    trace.call: glEnable(GL_COLOR_MATERIAL)
    trace.call: glColor4fv(0x7f4514e5f86c -> { 0.8, 0.8, 0.8, 1 })
    trace.call: glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, 0)
    trace.call: glViewport(0, 0, 1281, 1025)
    trace.call: glScissor(200, 200, 200, 200)
    trace.call: glClear(GL_COLOR_BUFFER_BIT | GL

    In dem Logfile treten jetzt ab und zu immer wieder Blocke auf, die mit einem glScissor(100,100,100,100) beginnen und mit einem glScissor(200,200,200,200) enden.
    In dem Beispiel oben steht im 1. Block z.B.

    trace.call: glUseProgram(13)
    trace.call: glBindTexture(GL_TEXTURE_2D, 13)

    Wie kann ich unter Linux diese den Inhalt dieser Bloecke (sprich die Funktionen, die zwischen den 2 glScissor Zeilen stehen) extrahieren?
    Irgendwie mit grep oder sed?


  • Mod

    extractor22 schrieb:

    Irgendwie mit grep oder sed?

    Ich würde awk nehmen.

    Nein, das ist keine Scherzantwort.

    P.S.: So:

    < test.dat awk '(($0 == "glScissor(200,200,200,200)") {show = 0}; (show) {print}; $0 == "glScissor(100,100,100,100)") {show = 1}'
    


  • SeppJ schrieb:

    extractor22 schrieb:

    Irgendwie mit grep oder sed?

    Ich würde awk nehmen.

    Nein, das ist keine Scherzantwort.

    Aber nur, wenn man awk schon kennt. Sonst ist man ja mit jeder Programmiersprache der eigenen Wahl schneller.


Anmelden zum Antworten