Почему `grep fil *` терпит неудачу?

Я обнаружил, что echo file|grep fil* терпит неудачу, но echo abcd|grep abc* преуспевает.

Я этого не понимаю, может кто-нибудь объяснить?

One Solution collect form web for “Почему `grep fil *` терпит неудачу?”

В вашем примере есть две проблемы.

Основной из них состоит в том, что вы предполагаете, что регулярные выражения работают так же, как и шаблоны glob в том, что * является подстановочным знаком, означающим «любая последовательность символов». В регулярных выражениях * означает «любое число предыдущего атома», поэтому fil* означает f за которым следует i за которым следуют ноль или более l символов. Вы должны сказать grep fil.* Чтобы получить намеченное значение:. означает «любой отдельный символ, так что .* означает «любая последовательность символов».

Меньшая проблема заключается в том, что вы используете некотируемые специальные символы, которые означают что-то под правилами glob, что означает, что оболочка может их интерпретировать. Если у вас есть файлы в локальном каталоге, соответствующие шаблонам glob fil* или abc* , оболочка будет расширять их , поэтому grep получит расширенные имена файлов в виде шаблона, а не RE. Всякий раз, когда вы используете такие символы в командной строке, вы должны процитировать их: echo file | grep 'fil.*' echo file | grep 'fil.*' .

  • В bash, grep для строки, начинающейся с \, и присваивания результата с помощью обратных шагов
  • Использование сгенерированного списка имен файлов в виде списка аргументов - с пробелами
  • Странная разница между pwd и / bin / pwd
  • «Grep-ing» от A до B в выводе hexdump
  • Разрешение отклонено при получении файла md5sum с помощью сценария оболочки?
  • Что такое аргумент `name` для` sh` для / do?
  • Эффективное объединение / сортировка / уникальное большое количество текстовых файлов
  • Добавить 0 в середине имени файла
  • Форматирование вывода: Подчеркивание
  • Как выполнить xargs grep для вывода grep с пробелами?
  • Bash, вставить последний использованный аргумент текущей команды
  • Заменить колонку с результатом команды
  • Interesting Posts

    Crontab генерирует новые файлы в домашней папке каждый запуск вместо вывода в файл журнала, указанный мной

    Как установить PostgreSQL и PostGIS на Ubuntu 14.04 и разрешить удаленный доступ через Интернет?

    проблема в установке RVM

    Почему `cksum` работает медленнее, чем` md5sum`?

    Разделение / загрузка раздела на Linux Mint

    rsyslog: выполнить скрипт по совпадающему событию журнала

    Как разделить буфер обмена Windows с Linux с помощью TightVNC?

    Почему я иногда неоднократно запрашивал «>» в ​​терминале?

    Отключите кнопку питания на Chromebook

    IPSec over L2TP: получено сообщение об ошибке NO_PROPOSAL_CHOSEN

    Время изменения Solaris 10

    Разница между максимальным размером резидентного набора, указанным / usr / bin / time vs. getrusage?

    Thunderbird: переопределить цвета в полученных HTML-письмах

    Как планировщик Linux определяет, связан ли процесс с привязкой ввода / вывода или привязана к процессору

    CronJob каждые 25 минут

    Linux и Unix - лучшая ОС в мире.