3

Я использую приведенную ниже команду в солярисе

ls -l | grep '*PROC*'

Но это не работает. У меня есть много файлов, которые содержат "PROC" в своем имени, например «XREF_PROC.complete», но когда я использую вышеуказанную команду, она не показывает никакого вывода. Когда я использую ls *PROC* он работает, но не работает с grep.

Спасибо

1 ответ1

10

ТЛ; др

Вам не нужен квантификатор, просто grep для PROC:

ls | grep PROC

длинная версия

Звездочка в вашей строке ls не совпадает со звездочкой в вашей строке grep .

Если в командной строке есть неэкранированная звездочка, оболочка раскроет ее до того, как ls увидит, это называется глобализация. Одна звездочка распространяется на все файлы в текущем каталоге, попробуйте, например, echo * . *PROC* распространяется на все файлы, содержащие PROC.

Звездочка, которую вы используете с grep , экранируется одинарными кавычками и, следовательно, будет интерпретироваться grep . Тем не менее, grep использует BRE по умолчанию (базовые регулярные выражения), где звездочка работает как квантификатор и поэтому требует некоторого символа или класса символов для количественной оценки, например, '.*' .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .