Как grep для точного слова, если строка имеет точку в нем

Я пытался найти конкретное слово BML.I в текущем каталоге.

Когда я попытался с помощью следующей команды:

grep -l  "BML.I" *

Он отображает все результаты, если он содержит слово BML

Можно ли grep для точного соответствия BML.I

Ответ 1

Вам нужно сбежать. (период), поскольку по умолчанию он соответствует любому символу и указывает -w для соответствия определенному слову, например.

grep -w -l "BML\.I" *

Обратите внимание, что в приведенном выше примере есть два уровня экранирования. Кавычки гарантируют, что оболочка передает BML\.I в grep. Затем \ ускоряет период для grep. Если вы опускаете кавычки, то оболочка интерпретирует \ как escape для периода (и просто передает неопределенный период в grep)

Ответ 2

попробуйте grep -wF

на странице man:

 -w, --word-regexp
                  Select  only  those  lines containing matches that form whole words.  The
                  test is that the matching substring must either be at  the  beginning  of
                  the line, or preceded by a non-word constituent character.  Similarly, it
                  must be either at  the  end  of  the  line  or  followed  by  a  non-word
                  constituent  character.  Word-constituent characters are letters, digits,
                  and the underscore.



 -F, --fixed-strings
              Interpret  PATTERN as a list of fixed strings, separated by newlines, any
              of which is to be matched.  (-F is specified by POSIX.)

Ответ 3

Я использую fgrep, что совпадает с grep -F

Ответ 4

Используйте эту команду:

ls | grep -x "BML.I"