GNU/Linux >> Tutoriales Linux >  >> Linux

Sed:¿Imprimir solo la primera aparición de una coincidencia de patrón?

Esta pregunta ya tiene respuestas aquí :Cómo seleccionar la primera aparición entre dos patrones incluyéndolos

(7 respuestas)
Cerrado hace 4 años.

Varias preguntas son similares a esta, pero no he encontrado una solución que funcione cuando quiero buscar un patrón en varias líneas. Lo siguiente

sed -n '/First string/,/Second string/ p' my.file

imprimirá todo ocurrencias del patrón coincidente, pero me gustaría solo la primera ocurrencia. Estoy usando GNU sed.

Respuesta aceptada:

Utilice q para salir explícitamente cuando se alcanza el patrón final.

En base GNU:

$ cat foo
foo
START
bar
END
blah
START another

$ sed -n '/START/,/END/p; /END/q' foo
START
bar
END

awk tal vez haría más fácil no repetir el patrón final:

$ awk '/START/{p=1} p; /END/{exit}' foo
START
bar
END

Linux
  1. Filtro Rsync:¿Copiar un solo patrón?

  2. ¿Solo devolver la cadena coincidente en Sed?

  3. ¿Imprimir línea anterior después de una coincidencia de patrón usando Sed?

  4. ¿Mostrar todo el archivo hasta el partido?

  5. ¿Mantener solo la primera línea de cada secuencia de líneas consecutivas que coincidan con un patrón?

Freebsd – Bsd Sed:¿Reemplazar solo la enésima aparición de un patrón?

¿Encontrar solo la primera aparición usando solo Grep?

Escribir en mayúsculas la primera letra de las palabras usando SED

grep coincide solo con líneas en un rango específico

Código de retorno de sed para ninguna coincidencia

Usar sed para reemplazar entre un patrón específico