Как 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"