Frage zu Regulären Ausdrücken mit grep oder sed



  • Hallo zusammen,

    ich habe eine Frage, bzw. ein Problem an dem ich gerade schon längere Zeit sitze.

    Ich möchte aus einer Menge von xml Dateien ein besttimmtes Tag samt inhalt heraussuchen und versuche mich an dem grep Befehl.

    Bisher habe ich es so versucht doch dann liefert er mir immer den ganzen Inhalt der xml Dateien.

    grep '[<_38>]' *.xml

    Leider ist es auch so, dass das Format der XML-Datei vorgibt, dass die inhaltlichen Tags alle zusammen in einer Zeile stehen.

    Ich würde eben gerne nur ein Teil dieser Zeile herausfilter, so dass ich hier eine Ausgabe der Form

    abc.xml <_38> hier steht was drin </_38>
    cde.xml <_38> hier steht noch was was drin </_38>
    fgh.xml <_38> hier steht was anderes drin </_38>
    ijk.xml <_38> hier steht ganz was anderes drin </_38>

    Gruß

    Adrian



  • Der Ausdruck '[<38>]' steht für ein Zeichen, das entweder '<', '', '3', '8' oder '>' ist. Es wird jede Zeile ausgegeben, die eines dieser Zeichen enthält (vermutlich fast alle Zeilen).

    Was du meintest ist wahrscheinlich:

    grep -e '<_38>' *.xml
    

    Martin



  • Hallo Martin

    wenn ich das versuche kommt folgendes

    grep -e '<_38>' *.xml
    grep: illegal option -- e
    Usage: grep -hblcnsviw pattern file . . .

    Und ohne das -e schreibt der mir die komplette Zeile heraus, aber ich hätte eben nur den Teil wo das eine xml-Tag drinnen steckt.

    Gruß

    Adrian



  • sowas kannst du mit sed machen.

    sed -en 's/bla \(das was du haben willst in klammern\) blub/\1/p'



  • Nichts für ungut, lieber winwood, aber mir Mails zu schicken nachdem in Deinem Thread gerade mal drei Minuten(!) niemand geantwortet hat, ist wirklich nicht angebracht. 👎

    Bitte unterlasse das in Zukunft, Du kannst ruhig warten, ob jemand in Deinen Threads was brauchbares postet, genau wie jeder andere hier auch.
    Privatbetreuung via Mail gibts hier - zumindest von mir - keine.


Anmelden zum Antworten