Cómo buscar un archivo de texto para un número entero específico

Cómo buscar un archivo de texto para un número entero específico

¿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'

\bes 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.

ingrese la descripción de la imagen aquí

información relacionada