Para impedir que grep
interprete uma string especialmente (uma expressão regular), use -F
(ou --fixed-string
):
$ cat test
one < two
Hello World
X<H
A <H A
I said: <Hello>
$ grep -F '<H' test
X<H
A <H A
I said: <Hello>
Lembre-se de citar o padrão de pesquisa corretamente, caso contrário, ele pode ser interpretado mal pelo seu shell. Por exemplo, se você executou grep -F <H test
, o shell tentará abrir um arquivo chamado "H" e usá-lo para alimentar a entrada padrão de grep
. grep
pesquisará a string "test" nesse fluxo. Os seguintes comandos são aproximadamente equivalentes entre si, mas não ao acima:
grep -F <H test
grep -F test <H # location of '<H' does not matter
grep -F H test
cat H | grep -F test # useless cat award
Apenas para palavras correspondentes, dê uma olhada na página de manual grep(1)
:
-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.
Exemplo de uso (usando o arquivo de teste acima):
$ grep -F -w '<H' test
A <H A
( -F
é opcional aqui porque <H
não tem um significado especial, mas se você pretende estender este padrão literal, pode ser útil então)
Para corresponder ao início de uma palavra, você precisa de expressões regulares:
$ grep -w '<H.*' test # match words starting with '<H' followed by anything
A <H A
I said: <Hello>