I was trying to search for a particular word BML.I
in a current directory.
When I tried with the below command:
grep -l \"BML.I\" *
I use fgrep
, which is the same as grep -F
try grep -wF
from man page:
-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.)
You need to escape the . (period) since by default it matches against any character, and specify -w to match a specific word e.g.
grep -w -l "BML\.I" *
Note there are two levels of escaping in the above. The quotes ensure that the shell passes BML\.I
to grep. The \
then escapes the period for grep
. If you omit the quotes, then the shell interprets the \
as an escape for the period (and would simply pass the unescaped period to grep
)
Use this command:
ls | grep -x "BML.I"