varias uso texto regulares para palabras palabra expresiones exacta egrep contar comando buscar avanzado archivos android python awk sed grep

android - uso - Usar grep para leer un registro de pattern1 en el archivo e imprimir solo líneas que contengan pattern1. Deje de buscar cuando se encuentra pattern2 en el archivo



grep varias palabras (2)

Usando grep/sed/awk , quiero buscar el pattern2 hasta que se encuentre el pattern2 en un archivo e imprimir los resultados que contienen solo el pattern1 .

No quiero las líneas entre el rango de patrón1 y patrón2 para las cuales hay muchas soluciones en este sitio. Por favor ayuda.

Intenté lo siguiente sin resultados:

adb logcat | grep -i ''patrón1'' | grep -m 1 ''pattern2''

Parece que ''|'' lo convierte en una AND condition y las cadenas que estoy buscando no están en la misma línea. Ellos están en diferentes líneas.

Actualizado: las soluciones funcionan en la terminal pero no en una secuencia de comandos. ¿Alguien puede ayudarme a descubrir por qué no funciona en un script?


El puede hacerse con una sola llamada a sed:

adb logcat | sed -n ''/pattern2/q; /pattern1/p''

Alternativamente, esto se puede hacer con una sola llamada a awk :

adb logcat | awk ''/pattern2/{exit} /pattern1/''


Use sed para detener la impresión después de encontrar el patrón2:

adb logcat | sed ''/pattern2/q'' | grep -i ''pattern1''

O use sed para imprimir pattern1 y salir después de pattern2:

adb logcat | sed -n ''/pattern1/p;/pattern2/q''