Gnuwin32 grep: Pipe-Ausgabe auf cmd.exe oder Powershell

609
valerio

Ich versuche, den Gnuwin32-Befehl grep zu verwenden, um eine Liste der Dateien zu erstellen, die ich einem anderen Befehl zuführen möchte (wirklich ein Perl-Skript). Ich habe eine Reihe von HTML-Dateien und möchte alle auflisten, die mit dem regulären Ausdruck übereinstimmen itemprop=['"]description.

Nun, nach einigem Fummeln, habe ich festgestellt, dass die cmd.exe aufgerufen wurde

grep -i -E -l "itemprop=['\"]description" path/to/files/*.htm

funktioniert gut, aber ich kann die Ausgabe nicht an perl weiterleiten (oder an einen anderen Befehl):

grep -i -E -l "itemprop=['\"]description" path/to/files/*.htm | perl myscript.pl

gibt eine Liste der Dateien an das Terminal aus, gefolgt von

grep: |: No such file or directory grep: perl: No such file or directory myscript.pl

grep behandelt | und nachfolgende Wörter als Argumente. Wie vermeide ich das?

Außerdem habe ich versucht, das Problem mit Powershell zu überwinden. Ich kann von dort aus problemlos pfeifen (wenn ich einen elementaren Ausdruck wie "itemprop" verwende), aber ich habe Schwierigkeiten, den zu suchenden Ausdruck anzugeben.

grep -i -E -l "itemprop=['\"]description" path/to/files/*.htm funktioniert einfach nicht. Powershell zeigt mir ein >> Zeichen Ich weiß gar nicht, was es bedeutet (mehr Input erwarten)? Ich habe alle Möglichkeiten versucht, Anführungszeichen zu umgehen, aber es scheint keine zu funktionieren. Manchmal ist es die Hülle, manchmal ist es Grep, die sich über einen unvergleichlichen [Charakter beschwert.

Jede Hilfe wird sehr geschätzt.

0

1 Antwort auf die Frage

0
MC ND

Es scheint, dass Sie eine Kollision gefunden haben, wie die verschiedenen Parser mit Zitaten umgehen. Der einfachste Weg, diesen Fall zu lösen, besteht darin, das abschließende Anführungszeichen des grepSuchausdrucks zu umgehen

grep -iEl "itemprop=['\"]description^" path/to/files/*.htm | perl myscript.pl 
Sehr schön, obwohl ich nicht sehe, warum ich dem abschließenden Zitat statt dem mittleren Zitat entgehen sollte. In der Zwischenzeit habe ich ein anderes Formular gefunden, nämlich "grep -iEl" itemprop = ['\\ ""] description "Pfad / to / files / *. Htm | perl myscript.pl` was ein bisschen Sinn macht, sobald Sie zu dieser verrückten Flucht in der Mitte kommen. Beachten Sie auch, dass keine der Methoden in Powershell funktioniert. valerio vor 9 Jahren 0