2012-05-14 14 views
29

¿Es grep capaz de proporcionar el número de línea en el que aparece la palabra especificada?Busque el número de línea donde aparece una palabra específica con "grep"

Además, ¿es posible usar grep para buscar una palabra que comience desde cierta línea hacia abajo?

+1

Creo que esto sería una mejor opción para [SuperUser] (http://superuser.com/). –

+4

@dunsmoreb No estoy de acuerdo. 'grep' es tanto una herramienta de programador como una herramienta de usuarios avanzados. –

+0

Uso 'grep' todo el tiempo. Pero esto realmente no es una pregunta relacionada con la programación. –

Respuesta

44

Usa grep -n para obtener el número de línea de un partido.

No creo que haya una forma de que grep comience con un cierto número de línea. Para eso, usa sed. Por ejemplo, para iniciar en la línea 10 e imprimir el número de línea y la línea de las líneas que coincidan, utilice:

sed -n '10,$ { /regex/ { =; p; } }' file 

para obtener sólo los números de línea, se puede usar

grep -n 'regex' | sed 's/^\([0-9]\+\):.*$/\1/' 

O simplemente podría usar sed:

sed -n '/regex/=' file 

la combinación de los dos comandos sed, se obtiene:

sed -n '10,$ { /regex/= }' file 
+0

Ok, entonces grep -n devolvería la línea que contiene las palabras Y el número de línea. ¿Hay alguna forma de obtener el número de línea SOLAMENTE? –

+0

@OneTwoThree Vea mis ediciones. –

+0

@OneTwoThree ¿Eso funcionó para ti? –

3

Puede llamar tail +[line number] [file] y el tubo a grep -n que muestra el número de línea:

tail +[line number] [file] | grep -n /regex/ 

El único problema con este método es el número de línea reportados por grep -n será [line number] - 1 menor que el número real de la línea en [file].

1

o puede utilizar

grep -n . file1 |tail -LineNumberToStartWith|grep regEx 

Esto se hará cargo de la numeración de las líneas en el archivo

grep -n . file1 

Esto imprimirá la última LineNumberToStartWith

tail -LineNumberToStartWith 

Y, finalmente, grepizará sus líneas deseadas (que incluirán el número de línea como en el archivo de orignal)

grep regEX 
Cuestiones relacionadas