Rohrleitungen findstr Ausgabe

Windows-Kommandozeile, ich möchte, um eine Datei zu suchen, die für alle Zeilen beginnend mit:

# NNN "<file>.inc"

wo NNN ist eine Zahl und <file> eine beliebige Zeichenfolge.

Will ich mit findstr, denn ich kann nicht verlangen, dass der Benutzer, der das script installieren ack.

Hier ist der Ausdruck, den ich kam mit:

>findstr /r /c:"^# [0-9][0-9]* \"[a-zA-Z0-9_]*.inc" all_pre.txt

Die Datei zu suchen ist all_pre.txt.

So weit So gut. Ich will jetzt die pipe an einen anderen Befehl, zum Beispiel sagen more.

>findstr /r /c:"^# [0-9][0-9]* \"[a-zA-Z0-9]*.inc" all_pre.txt | more

Ist die Folge die gleiche Ausgabe wie das Vorherige Befehl, jedoch mit dem Datei-Namen als Präfix für jede Zeile (all_pre.txt).

Dann kommt:

FINDSTR: cannot open |
FINDSTR: cannot open more

Warum werden nicht die Rohr-Arbeit?


Ausschnitt der Inhalte all_pre.txt

# 1 "main.ss"
# 7 "main.ss"
# 11 "main.ss"
# 52 "main.ss"
# 1 "Build_flags.inc"
# 7 "Build_flags.inc"
# 11 "Build_flags.inc"    
# 20 "Build_flags.inc"
# 45 "Build_flags.inc(function a called from b)"

EDIT: ich brauche zu entkommen, den Punkt in der regex auch. Nicht die Frage, aber lohnt sich zu erwähnen.

>findstr /r /c:"^# [0-9][0-9]* \"[a-zA-Z0-9_]*\.inc" all_pre.txt

BEARBEITEN nachdem Frank Bollack:

>findstr /r /c:"^# [0-9][0-9]* \"[a-zA-Z0-9_]*\.inc.*" all_pre.txt | more

nicht funktioniert, obwohl (denke ich), sollte sich für die gleichen string wie vorher, dann beliebige Zeichen, beliebig oft. Das muss die ", richtig?

Hinweis: der text wieder vielleicht ein bisschen anders, da mein OS ist nicht in Englisch. cannot open ist die beste übersetzung, die ich machen konnte, ich weiß nicht genau, was das wäre auf einem echten englischen OS.

InformationsquelleAutor Gauthier | 2010-04-29

Schreibe einen Kommentar