Es sieht so aus, als würden Sie Windows Command Prompt ( cmd.exe
) als Shell verwenden, und Sie werden durch die Zitierkonventionen gestolpert oder nicht. Wenn ich Ihren Befehl in einer Fedora 15- Bash-Shell ausführen, funktioniert er. Wenn ich es unter Windows mit der Cygwin-Bash-Shell starte, funktioniert es.
Damit es funktioniert cmd.exe
, müssen Sie die Anführungszeichen und den Abstand ändern. Ich habe die folgenden Befehle in cmd.exe
Windows 7 ausgeführt. Beachten Sie, wie ich die Anführungszeichen im Befehl grep so geändert habe, dass Anführungszeichen anstelle von Anführungszeichen verwendet werden. Vor der Pipe ( |
) steht kein Leerzeichen .
Ich verwende die Cygwin-Version von GNU-grep, die sich wie Ihre Win32-GNU-grep verhalten sollte.
c:\>c:\cygwin\bin\grep --v GNU grep 2.6.3 Copyright (C) 2009 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. c:\>echo "2008abc.html"| c:\cygwin\bin\grep -oiP '\"[^.]' "2
Wenn vor der Pipe ein Leerzeichen vorhanden ist, wird das Leerzeichen durch die Pipeline wiederholt, und grep stimmt mit diesem überein. Dies liegt an dem idiotischen Parsenverhalten von cmd.exe
.
c:\>echo "2008abc.html" | c:\cygwin\bin\grep -oiP '\"[^.]' "2 "
Überprüfen Sie zu Ihrer eigenen Vernunft, ob Sie Cygwins Bash oder eine andere Shell mit angemessenen und konsistenten Zitierkonventionen verwenden können.