Похоже, что вы используете Windows Command Prompt ( cmd.exe
) в качестве оболочки и вас запутывают соглашения о цитировании или их отсутствие. Если я запускаю вашу команду в оболочке Fedora 15 Bash, она работает. Если я запускаю его в Windows, используя оболочку Cygwin Bash, это работает.
Чтобы заставить его работать cmd.exe
, вы должны изменить кавычки и интервал. Я запустил приведенные ниже команды в cmd.exe
Windows 7. Обратите внимание, как я изменил кавычки в команде grep, чтобы использовать одинарные кавычки вместо двойных кавычек, и перед pipe ( |
) нет пробела .
Я использую Cygwin-версию GNU grep, которая должна вести себя так же, как ваша Win32 GNU grep.
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
Если перед трубой есть пробел, пробел будет отражен через конвейер, и grep будет соответствовать ему. Это связано с идиотским поведением разбора cmd.exe
.
c:\>echo "2008abc.html" | c:\cygwin\bin\grep -oiP '\"[^.]' "2 "
Для вашего же здоровья посмотрите, можете ли вы использовать Cygwin's Bash или любую другую оболочку с разумными и последовательными соглашениями о цитировании.