Ich versuche, mit dem Befehl Gnuwin32 grep eine Liste von Dateien zu erstellen, die ich einem anderen Befehl hinzufügen möchte (eigentlich einem Perl-Skript). Ich habe eine Reihe von HTML-Dateien und möchte alle auflisten, die mit dem regulären Ausdruck übereinstimmen itemprop=['"]description
.
Jetzt, nach einigem Herumspielen, habe ich festgestellt, dass die cmd.exe aufgerufen wird
grep -i -E -l "itemprop=['\"]description" path/to/files/*.htm
Funktioniert einwandfrei, aber ich kann die Ausgabe nicht an Perl leiten (oder an einen anderen Befehl):
grep -i -E -l "itemprop=['\"]description" path/to/files/*.htm | perl myscript.pl
druckt eine Liste der Dateien auf das Terminal, 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 lösen. Ich kann von dort aus problemlos weiterleiten (wenn ich einen elementaren Ausdruck wie "itemprop" verwende), aber ich habe Probleme, 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ß nicht einmal, was es bedeutet (ich erwarte mehr Eingaben). Ich habe jede Art von Flucht vor Anführungszeichen versucht, aber keine scheint zu funktionieren. Manchmal ist es die Shell, manchmal ist es grep, die sich über einen unvergleichlichen Charakter beschwert.
Jede Hilfe wird sehr geschätzt.
quelle
grep -iEl "itemprop=['\\""]description" path/to/files/*.htm | perl myscript.pl
die ein bisschen sinnvoll zu sein scheint, sobald Sie zu dieser verrückten Flucht in der Mitte kommen. Beachten Sie auch, dass keine der beiden Methoden in Powershell funktioniert.