Wie kann ich mit findstr mit Zeilenumbruch regular expression
Ich bin auf der windows-dos-Eingabeaufforderung. Ich habe die log-Datei enthält eine log wie:
Timestamp: Order received for Item No. 26551
Timestamp: Exception: OutOfRangeException
Timestamp: Message: Inventory Item is not stock. Item No. 23423
Timestamp: Order received for Item No. 23341
Möchte ich alle extrahieren Sie die Artikelnummer, die hat geben, irgendeine Art von Ausnahme. Ich bin mit findstr-Befehl für diesen. wie kann ich Zeilenumbrüche in mein regulärer Ausdruck? Ich möchte alle Zeilen, die Ausnahme von Wort und von der nächsten Zeile die item no.
Hilfe?
- Können Sie PowerShell verwenden?
- kann nicht 🙁
- Schließe ich diese Frage? wir sind scheinbar auf dead end.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich habe entdeckt, dass eine nicht dokumentierte Funktion - FINDSTR - KANN neue-Zeile-Zeichen
<CR>
und<LF>
und weiterhin das Spiel auf die nachfolgenden Zeilen. Aber der Suchstring muss in der Befehlszeile angegeben, die neue-Zeile-Zeichen muss in der Variablen und die Werte übergeben werden müssen, die über die verzögerte expansion.Eine weitere Komplikation ist die IN () - Klausel einer FOR-Schleife ausgeführt wird, in einem separaten impliziten CMD-Sitzung, und die verzögerte Erweiterung muss erneut aktiviert werden. Auch, die ! Zeichen müssen maskiert werden, so dass Sie in der 2. CMD-Sitzung.
Diesem kleinen test-script funktioniert der trick.
BEARBEITEN 2015-01-11
Ich nur immer wieder die Frage, und erkennen, dass ich es falsch. Der OP wollte die Artikelnummer, wo die Exception string wird auf die Vorherige Zeile (Blick hinter die Suche), aber meine Lösung ist nur zu finden, die Artikelnummer, wo die Ausnahme wird auf die nachfolgende Zeile (look-ahead-Suche).
Leider gibt es keinen Weg, um FINDSTR zu tun, einen Blick hinter Suche.
Unter den meisten Umständen würde ich löschen, die Antwort oben, da es keine Antwort auf die Frage. Aber diese Antwort ist ein Dokument Roman FINDSTR Funktionen, die nicht beschrieben worden, bevor das könnte sehr nützlich sein. Die look-ahead-Funktion ist nahe genug, in Konzept, um das Aussehen hinter der Funktion, dass jemand, der es braucht, vielleicht finden Sie die Antwort über diese Frage, also ich Plane, es zu halten.
Ich habe eine rein script basierte Lösung, die läuft auf jedem Windows-Rechner ab XP weiter, aber es nicht mit FINDSTR. JREPL.FLEDERMAUS ist ein regulärer Ausdruck, Befehl Linie, können Sie leicht extrahieren Sie die gewünschten Artikelnummern.
Hello(return)there
in eine text-Datei?Hatte ich einen Blick in die findstr Dokumentation und ich denke, es ist nicht in der Lage zu tun, eine mehrzeilige Suche.
Wahrscheinlich sollten Sie die Verwendung von mehr fortgeschrittene Werkzeuge wie awk, oder einige Versionen von grep zu unterstützen scheint, multiline, regex zu.
Können Sie einen Blick auf stackoverflow.com/questions/152708/
Wenn Sie auf Vista oder Windows 7 (oder falls du manuell installieren, die auf XP), können Sie PowerShell verwenden, für diese:
$resultlist
enthält dann eine Liste aller Artikelnummern, die Folgen einer Linie mitException
im es.Wenn Sie können download-tools, hier ist ein Ruby für Windows Befehl, den Sie verwenden können.