2016-06-15 4 views
1

Wie kann ich eine Zeile grep, die Sonderzeichen enthält.Wie funktioniert der Befehl "grep -oP" in einer Zeile, die Sonderzeichen enthält?

wie zum Beispiel habe ich eine Datei mit diesem Text

ISA^G00^G   ^G00^G   ^G12^G14147844480 ^GZZ^G001165208  ^G160601^G1903^GU^G00401^G600038486^G0^GP^G>~GS^GTX^G14147844480^G001165208^G20160601^G1903^G600038486^GX^G004010VICS~ST^G864^G384860001~BMG^G00^G^G04~MIT^G000000591^GKohl's AS2 Certificate Change June 21, 2016~N1^GFR^GKOHL'S DEPARTMENT STORES~PER^GIC^[email protected]^GTE^G262-703-7334~MSG^GAttention Kohl's AS2 trading partners, Kohl's will be changing. 

Ich mag würde die Zeile unter MSG Segment grep

mit diesem Befehl:

grep -OP ‚MSG. \ K [\ w \ s \ d] * '< Dateiname

Erwartetes Ergebnis:

Achtung Kohls AS2 Handelspartner, Kohls wird sich ändern.

Tatsächliches Ergebnis:

Achtung Kohl

Wie werde ich es tun?

+1

'grep -op 'MSG \ K. *' filename'? – Cyrus

Antwort

3

Ihr Muster:

grep -Po 'MSG.\K[\w\s\d]*' 

ist passend nur Attention Kohl, weil Sie einen Apostroph danach haben, die nicht durch eine der \w, \s, \d Token angepasst werden.

Sie haben auch , und . in Ihrem gewünschten Teil, so dass Sie diese auch übereinstimmen müssen. Auch \d ist eigentlich eine Teilmenge von \w also keine explizite Notwendigkeit \d.

So können Sie tun:

grep -Po 'MSG.\K[\w\s,.'\'']*' 

Oder wenn Sie möchten, nur bis zum Ende zum Spiel:

grep -Po 'MSG.\K.*' 
+0

Dies funktioniert tnx mate;) Ich habe nur einige zusätzliche für einige Fälle hinzugefügt –

+0

Dies funktioniert nicht bereits in gezippten Dateien. –

0

Wollen Sie einfach alles nach MSG grep? Das wäre mit anderen Methoden einfacher. Auch ich sehe, es gibt mehrere ^G Zeichen in Ihrer Datei, neben MSG Wort als auch. Nicht sicher, ob du diese beim Grep'en ausschließen willst.

Zurück zu Ihrer gegebenen Regex - Sie können \W hinzufügen, die mit einem Nicht-Wort-Zeichen übereinstimmen und Ihnen das gewünschte Ergebnis geben.

grep -oP 'MSG.\K[\w\s\d\W]*' filename

auch keine Notwendigkeit < Betreiber grep hier zu verwenden.

+0

Ich möchte nur die Nachricht grep außer^G und andere nur die Nachricht und auch welche anderen Methoden meinst du könnten Sie bitte geben einige tnx;) –

Verwandte Themen