Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

151
Vistas
Impresión de líneas entre dos dos patrones

Tengo un archivo como este:

 text1 text2 Pattern1 text3 text4 Pattern1 text5 text2 text6 Pattern1 text7 text8 Pattern2 text2 text9 text10 text2 Pattern1 text11 text12 Pattern1 text13 text14 Pattern1 text15 text16 Pattern2 text1 text2 Pattern1 text3 text4 Pattern1 text5 text6 Pattern1 text7 text2 text8 Pattern2 text21 text22

Quiero imprimir SOLAMENTE

 Pattern1 text7 text8 Pattern2 Pattern1 text15 text16 Pattern2 Pattern1 text7 text2 text8 Pattern2

es decir, si Pattern1 es seguido por Pattern2, entonces imprima líneas entre Pattern1 y Pattern2. No quiero líneas si Pattern1 es seguido por Pattern1.

Un comando awk es muy apreciado.

Estaba intentando como:

 awk '/Pattern1/,/Pattern2' file \> output

pero también da todos los carriles que aparecen entre dos Pattern1 sucesivos.

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Puedes usar este awk :

 awk ' /^Pattern1$/ {s = $0 ORS; next} s != "" {s = s $0 ORS} /^Pattern2$/ {printf "%s", s; s = ""} ' file Pattern1 text7 text8 Pattern2 Pattern1 text15 text16 Pattern2 Pattern1 text7 text2 text8 Pattern2
over 4 years ago · Santiago Trujillo Denunciar

0

$ awk ' /Pattern1/,/Pattern2/ { # between the first start and end markers if(/Pattern1/) # at the begin marker... b=$0 # ... reset buffer else b=b ORS $0 # or keep on buffering if(/Pattern2/) # at the end marker... print b # ... it is time to output }' file

head -4 de salida:

 Pattern1 text7 text8 Pattern2 ...
over 4 years ago · Santiago Trujillo Denunciar

0

Hacer un montón de suposiciones sobre requisitos no declarados, como si coincidir con el primer o el último Patrón2, qué hacer si falta uno u otro en un archivo, qué hacer si ambos "patrones" aparecen en 1 línea, etc.:

 $ cat tst.awk /Pattern1/ { f=1; rec="" } f { rec = rec $0 ORS if ( /Pattern2/ ) { printf "%s", rec f = 0 } }

 $ awk -f tst.awk file Pattern1 text7 text8 Pattern2 Pattern1 text15 text16 Pattern2 Pattern1 text7 text2 text8 Pattern2

Consulte también ¿Cómo encuentro el texto que coincide con un patrón? .

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda