Tengo archivos de registro muy largos, ¿es posible pedirle a grep que solo busque las primeras 10 líneas?¿Puedo grep solo las primeras n líneas de un archivo?
Respuesta
La magia de las tuberías;
head -10 log.txt | grep <whatever>
Tiene algunas opciones para usar programas junto con grep
. El más simple en mi opinión es el uso de head
:
head -n10 filename | grep ...
head
dará salida a las primeras 10 líneas (usando la opción -n
), y luego se puede canalizar esa salida a grep
.
que ni siquiera darse cuenta, todas las soluciones aquí usando '' head' han utilizado -n 10' ** (incluido yo) ** sin darse cuenta de que 'head' por ** default ** muestra *** solo 10 líneas ***. :) –
Oh _goodness_ eso es correcto ... –
La salida de head -10 file
se puede canalizar a grep
con el fin de lograr esto:
head -10 file | grep …
Utilizando Perl:
perl -ne 'last if $. > 10; print if /pattern/' file
Usted puede utilizar la siguiente línea:
head -n 10 /path/to/file | grep [...]
O utilizar awk
para un único proceso sin |
:
awk '/your_regexp/ && NR < 11' INPUTFILE
En cada línea, si your_regexp
partidos, y el número de registros (líneas) es menor que 11, se ejecuta la acción predeterminada (que es la impresión de la entrada línea).
O utilice sed
:
sed -n '/your_regexp/p;10q' INPUTFILE
comprueba su expresión regular e imprime la línea (-n
medios no publique la entrada, que es lo contrario el valor por defecto), y se cierra inmediatamente después de la línea 10.
¿Por qué no renunciar el día 10? (ver solución sed) – potong
'awk '{if (NR <= 10) {if (índice ($ 0," ab ")> 0) {imprimir $ 0; }} else {exit; }} 'textfile' - más rápido. –
@potong tienes razón, corregido. @srikanthradix, aunque puede ser más rápido tu solución no está buscando expresiones regulares, sino solo cadenas fijas. 'awk '{if (NR <= 10) {if ($ 0 ~" YOUR_REGEXP ") {print}} else {exit; }} 'textfile' hace. –
grep "pattern" <(head -n 10 filename)
Para la gente que encuentran esto en Google, que tenía que buscar en los primeros n
líneas de varios archivos, pero sólo para imprimir los nombres de archivo coincidentes. Solía
gawk 'FNR>10 {nextfile} /pattern/ { print FILENAME ; nextfile }' filenames
Los FNR..nextfile
deja de procesar un archivo se han visto una vez 10 líneas. El //..{}
imprime el nombre del archivo y se mueve cada vez que aparece la primera coincidencia en un archivo determinado. Para citar los nombres de archivo para el beneficio de otros programas, utilice
gawk 'FNR>10 {nextfile} /pattern/ { print "\"" FILENAME "\"" ; nextfile }' filenames
Fui una de esas personas que encontraron esto en Google. ¡Gracias! – Floris
para mí, este código imprimió la ruta completa del archivo. Que es exactamente lo que necesitaba. También 'FNR = 1' solo buscará 1ra línea. ¡Gracias! –
grep -A 10 < Patrón >
Se trata de agarrar el patrón y los siguientes 10 líneas después el patrón. Esto funcionaría bien solo para un patrón conocido, si no tiene un patrón conocido use las sugerencias de "cabeza".
Aunque podría estar bien. agregue más descripción de la pregunta para que la respuesta sea más completa. –
cabeza -10 log.txt | grep -A 2 -B 2 pattern_to_search
cabeza -10 log.txt: lea las primeras 10 líneas del archivo.
-A 2: imprime dos líneas antes del patrón.
-B 2: imprime dos líneas después del patrón.
Tuve un problema similar y todos los problemas anteriores no lo resuelven por completo. También estoy interesado en obtener el nombre del archivo que contiene las líneas correspondientes. Mi solución:
ls |parallel --gnu 'cat <(echo {}) <(head {})|grep -B1 -m1 -P "^>.*F3$"'
N.B: El patrón en mi caso siempre coincide con la primera línea.
Una extensión de la respuesta de Joachim Isaksson: muy a menudo necesito algo del medio de un archivo largo, p. Ej. líneas 5001 a 5020, en cuyo caso se pueden combinar con head
tail
:
head -5020 file.txt | tail -20 | grep x
esto se pone las primeras 5020 líneas, a continuación, muestra sólo el último de los 20, entonces todo para las tuberías grep.
(Editado: error poste de cerca en mis números de ejemplo, el tubo a grep añadido)
- 1. Cómo unir las primeras n líneas en un archivo
- 2. Lea solo las primeras líneas de texto de un archivo
- 3. Abra solo las primeras líneas de un archivo en Vim
- 4. ¿Omitiendo las primeras n líneas cuando usas regex con sed?
- 5. carga lenta de solo las primeras líneas N en emacs org-mode
- 6. Eliminar las primeras líneas X de un archivo PHP
- 7. Mostrar solo las primeras N líneas de salida de una consulta SQL
- 8. ¿Cómo puedo eliminar las primeras n líneas en una cadena en C#?
- 9. Leer líneas de un archivo de texto pero omita las dos primeras líneas
- 10. Obtenga las primeras líneas de Wikipedia Artículo
- 11. Java: lea las últimas n líneas de un archivo ENORME
- 12. ¿Qué es lo opuesto a la cabeza? Quiero que todos, pero las primeras N líneas de un archivo
- 13. ¿Lees las últimas n líneas de un archivo en Ruby?
- 14. Truncar cadena a las primeras n palabras
- 15. Grep Regex: enumere todas las líneas excepto
- 16. Archivo por lotes para eliminar las primeras 3 líneas de un archivo de texto
- 17. ¿Cómo eliminar las dos primeras líneas y las últimas cuatro líneas de un archivo de texto con bash?
- 18. Dividir una cadena solo en las primeras n ocurrencias de un delimitador
- 19. En vim, ¿cómo puedo eliminar todas las líneas en un archivo, excepto las últimas 100 líneas?
- 20. Cómo seleccionar las N primeras filas en un Grupo LinqPor
- 21. Cómo leer las últimas "n" líneas del archivo de registro
- 22. Seleccionar primeras n filas en ContentProvider
- 23. Grep ignora líneas múltiples
- 24. Eliminar las primeras X líneas de una base de datos
- 25. Mongodb: Seleccione las primeras N filas de cada grupo
- 26. líneas grep match only en un rango especificado
- 27. ¿Cómo puedo grep para líneas de código enteras, posiblemente envueltas?
- 28. Cómo puedo leer de manera eficiente las primeras pocas líneas de muchos archivos en Delphi
- 29. ¿Por qué partido grep todas las líneas para el patrón "\ '"
- 30. ¿Cómo puedo dividir un archivo en n de partes
también puede canalizar una secuencia arbitraria a 'head':' someCmd | head -10 ' –
La cabecera imprime por defecto las primeras 10 líneas a la salida estándar, por lo que esto es válido para 10 líneas' head log.txt | grep ' –
Zlemini
¿Hay alguna manera de hacer esto al usar la opción' -l' de grep? Me gustaría enumerar todos los archivos cuyos primeros 5 caracteres son 'RIFFD'. –