![Cómo buscar un archivo de texto para un número entero específico](https://rvso.com/image/89165/C%C3%B3mo%20buscar%20un%20archivo%20de%20texto%20para%20un%20n%C3%BAmero%20entero%20espec%C3%ADfico.png)
¿Existe una forma sencilla de buscar en un archivo de texto (código fuente) todas las instancias de un número entero específico? Esto no debería activarse en números más grandes que incluyen el número entero como una subcadena, pero no puede simplemente excluir dichas líneas ya que podrían contener ambos casos:
buscando '6'...
int a=6; // found
int b=16; // not found (despite the '6' in '16')
int c=6, d=16; // found
Realmente estoy buscando un enfoque de línea de comandos para esto, pero también tengo curiosidad por saber si hay unaFOSSEditor tipo GUI que lo hará.
Respuesta1
grep -E '\b6\b'
\b
es un "límite de palabra"
Editar: después de señalar a @nobar en la dirección correcta, encontró/señaló la opción de acceso directo -w
(word-regexp) en la página de manual, que simplifica lo anterior a:
grep -w 6
Si se usa mucho, podría usar una función similar a
wgrp(){ grep -w "$1" "$2"; }
Nota (para @glenn-jackman): si no cita "$2"
aquí, puede usar la función como filtro de canalización. Pero sí, entonces no funcionará con nombres de archivos con espacios.
Después de leer otra gran respuesta de @Gilles, ahora propongo
igrp(){ grep -E "(^|[^0-9])$1($|[^0-9])" "$2"; }
Respuesta2
Puede buscar un número entero específico con una expresión regular. Busque los dígitos precedidos por el comienzo de los datos o por un carácter que no sea un dígito, y también después de los dígitos.
grep -e '^6$' -e '^6[^0-9]' -e '[^0-9]6$' -e '[^0-9]6[^0-9]' # BRE syntax
grep -E '(^|[^0-9])6($|[^0-9])' # ERE syntax
Una búsqueda de palabras completas, como se sugiere en otras respuestas, pierde resultados como foo6bar
. (Puede que esto no sea un problema para su caso de uso, pero es lo que solicitó).
Cualquier editor o visor de texto medio serio (por ejemplo, less
) tiene búsqueda de expresiones regulares. Consulte su documentación para ver qué sintaxis de expresiones regulares utiliza.
Respuesta3
Supongo que ésta no era una necesidad tan oscura. Mi editor de programación habitual,plumasadmite esto a través del cuadro de diálogo "buscar" usando la opción "Coincidir solo con la palabra completa". Estoy seguro de que muchos otros editores también tienen esto, aunque por el momento, aparentemente no es el antepasado de pluma,gedit.