Estou atrás de uma ferramenta do tipo grep para pesquisar strings puramente literais. Estou procurando a ocorrência de uma linha de um arquivo de log, como parte de uma linha em um arquivo de log separado. O texto da pesquisa pode conter todos os tipos de caracteres especiais regex, por exemplo []().*^$-\
,.
Existe um utilitário de pesquisa Unix que não usaria regex, mas apenas procuraria ocorrências literais de uma string?
grep
busca por strings literais?" em vez de "Existe algo assimgrep
pode pesquisar strings literais?";)
Respostas:
Você pode usar grep para isso, com a opção -F.
fonte
-e
opção. Como esta:grep -F -e "fixed1" -e "fixed2" -e "fixed3" -e "fixed4"
. Não são necessárias novas linhas;)fgrep
é usado.grep --include=\*.php -FRn -e "$$"
uso de citações simples me deu o resultado desejado:grep --include=\*.php -FRn -e '$$'
$
e alguns outros caracteres são especiais e serão substituídos por bash depois que você clicar em enter e antesgrep
(ou qualquer comando) ser executado. Você pode dizer ao bash para deixar todos os caracteres (exceto as aspas simples) intocados, colocando-os entre aspas simples. Se você precisar digitar uma aspa simples, faça assim'I'\''m special'
Isso é
fgrep
ougrep -F
não fará expressões regulares.fgrep
é idêntico,grep -F
mas prefiro não ter que me preocupar com as discussões, sendo intrinsecamente preguiçoso :-)fonte
egrep
efgrep
não são especificados pelo padrão POSIX;grep -F
egrep -E
sãoPasse
-F
paragrep
.fonte
você também pode usar awk, pois ele tem a capacidade de encontrar strings fixas, bem como recursos de programação, por exemplo, apenas
fonte
resultado
fonte