Как 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.)