Я вижу ту же проблему о SunOS 5.10. /usr/bin/egrep
не поддерживает расширенные регулярные выражения.
Попытайтесь использовать /usr/xpg4/bin/egrep
:
$ echo 'this line has whitespace
thislinedoesnthave' | /usr/xpg4/bin/egrep '[[:space:]]'
this line has whitespace
Другая опция могла бы быть, чтобы просто использовать жемчуг:
$ echo 'this line has whitespace
thislinedoesnthave' | perl -ne 'chomp;print "$_\n" if /[[:space:]]/'
this line has whitespace
Возможно, необходимо защитить шаблон с кавычками (если удар или что-либо эквивалентное для оболочки Вы используете).
[и] может иметь особое значение для оболочки.
Если Вы используете 'ухудшенные' версии grep (я заключаю термин в кавычки, потому что большинство UNIX'es, я продолжаю работать все еще, использует исходный REs, не те необычные с" \s
" или" [[:space:]]
" :-), можно просто вернуться к самой низкой форме РЕ.
, Например, если :space:
определяется как пробелы и вкладки, просто используйте:
egrep '[ ^I]' file
, Что ^I
фактический символ табуляции, не эти два символа ^
и I
.
Это принимает :space:
, определены как вкладки и пробелы, иначе скорректируйте выбор в эти []
символы.
преимущество использования ухудшенного REs состоит в том, что они должны работать над всеми платформами (по крайней мере, для ASCII; Unicode или неанглийские языки могут иметь различные правила, но я редко нахожу потребность).
$ cat > file
this line has whitespace
thislinedoesnthave
$ egrep [[:space:]] file
this line has whitespace
Работы под debian.
Для Соляриса, не там "eselect" как (см. хинду), или файл альтернатив для установки принимает значение по умолчанию egrep версия?
Имеют Вас, попробовал grep-E, потому что, если egrep, который находится на Вашем пути, не является хорошим, возможно, grep.