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''