Busco una herramienta de tipo grep para buscar cadenas puramente literales. Estoy buscando la aparición de una línea de un archivo de registro, como parte de una línea en un archivo de registro separado. El texto de búsqueda puede contener todo tipo de caracteres especiales de expresiones regulares, por ejemplo, []().*^$-\
.
¿Existe una utilidad de búsqueda de Unix que no use expresiones regulares, sino que solo busque apariciones literales de una cadena?
grep
pregunto por qué la pregunta no era "¿Puedo buscar cadenas literales?" en lugar de "¿Hay algo asígrep
que pueda buscar cadenas literales?" Los destornilladores de cabeza plana se ajustan a las cabezas de los tornillos Philips, ya sabe;)
Respuestas:
Puede usar grep para eso, con la opción -F.
fuente
-e
opción. De esta manera:grep -F -e "fixed1" -e "fixed2" -e "fixed3" -e "fixed4"
. No se requieren nuevas líneas;)fgrep
su lugar se utiliza.grep --include=\*.php -FRn -e "$$"
arrojó ningún resultado: el uso de citas simples me dio el resultado deseado:grep --include=\*.php -FRn -e '$$'
$
y algunos otros caracteres son especiales y serán reemplazados por bash después de presionar enter y antesgrep
(o cualquier comando) se ejecute. Puede decirle a bash que deje todos los caracteres (excepto las comillas simples) sin tocar encerrándolos entre comillas simples. Si necesita escribir una cita simple, hágalo así'I'\''m special'
Eso es
fgrep
ogrep -F
que no hará expresiones regulares.fgrep
es idéntico a,grep -F
pero prefiero no tener que preocuparme por los argumentos, siendo intrínsecamente vago :-)fuente
egrep
yfgrep
no están especificados por el estándar POSIX;grep -F
ygrep -E
sonPasar
-F
agrep
.fuente
también puede usar awk, ya que tiene la capacidad de encontrar cadenas fijas, así como capacidades de programación, por ejemplo, solo
fuente
salida
fuente