Je cherche un outil de type grep pour rechercher des chaînes purement littérales. Je recherche l'occurrence d'une ligne d'un fichier journal, dans le cadre d'une ligne dans un fichier journal séparé. Le texte de recherche peut contenir toutes sortes de caractères spéciaux regex, par exemple []().*^$-\
.
Existe-t-il un utilitaire de recherche Unix qui n'utiliserait pas de regex, mais qui rechercherait simplement des occurrences littérales d'une chaîne?
grep
demande pourquoi la question n'était pas "Puis-je rechercher des chaînes littérales?" au lieu de "Y a-t-il quelque chose commegrep
ça qui peut rechercher des chaînes littérales?" Les tournevis à tête plate peuvent s'adapter aux têtes de vis Philips, vous savez;)
Réponses:
Vous pouvez utiliser grep pour cela, avec l'option -F.
la source
-e
option. Comme ceci:grep -F -e "fixed1" -e "fixed2" -e "fixed3" -e "fixed4"
. Aucune nouvelle ligne requise;)fgrep
est utilisé.grep --include=\*.php -FRn -e "$$"
utilisation de questions simples m'a donné le résultat souhaité:grep --include=\*.php -FRn -e '$$'
$
et quelques autres caractères sont spéciaux et ils seront remplacés par bash après avoir appuyé sur Entrée et avantgrep
(ou n'importe quelle commande) est exécutée. Vous pouvez dire à bash de laisser tous les caractères (sauf un guillemet simple) intacts en les mettant entre guillemets simples. Si vous avez besoin de taper un guillemet simple, faites-le comme ça'I'\''m special'
C'est soit
fgrep
ougrep -F
qui ne fera pas les expressions régulières.fgrep
est identiquegrep -F
mais je préfère ne pas avoir à me soucier des arguments, étant intrinsèquement paresseux :-)la source
egrep
etfgrep
ne sont pas spécifiés par le standard POSIX;grep -F
etgrep -E
sontPasser
-F
àgrep
.la source
vous pouvez également utiliser awk, car il a la capacité de trouver une chaîne fixe, ainsi que des capacités de programmation, par exemple uniquement
la source
production
la source