printing texto Obtenga el número de línea mientras usa grep




grep linux (5)

grep -nr SEARCHTERM file1 file2 ...

Estoy utilizando grep recursiva para buscar archivos en una cadena, y todos los archivos coincidentes y las líneas que contienen esa cadena se imprimen en el terminal. Pero, ¿es posible obtener los números de línea de esas líneas también?

ej: actualmente lo que obtengo es /var/www/file.php: $options = "this.target" , pero lo que estoy tratando de obtener es /var/www/file.php: 1142 $options = "this.target"; , bien donde 1142 sería el número de línea que contiene esa cadena.

La sintaxis que estoy usando para grep recursivamente es sudo grep -r 'pattern' '/var/www/file.php'

Una pregunta más es, ¿cómo obtenemos resultados para no igual a un patrón? ¿Como todos los archivos pero no los que tienen una cierta cadena?


Para mostrar los resultados con los números de línea, puede intentar esto

grep "word to search for" /path/to/file/file -nr

El resultado debería ser algo como esto:

linenumber: data data data word to search for data data

grep -nr directorio "cadena de búsqueda"

Esto le da la línea con el número de línea.


Los números de línea se imprimen con grep -n :

grep -n pattern file.txt

Para obtener solo el número de línea (sin la línea correspondiente), se puede usar cut :

grep -n pattern file.txt | cut -d : -f 1

Las líneas que no contienen un patrón se imprimen con grep -v :

grep -v pattern file.txt

Si solo quieres el número de línea haz esto:

grep -nr Pattern file.ext | gawk '{print $1}' FS=":"

Ejemplo:

$ grep -nr 9780545460262 EXT20130410.txt | gawk '{print $1}' FS=":" 
48793
52285
54023