Tengo varios archivos de texto con este formato:
name: john
address: bay area
phone: 6505561234
image: /work/myimage.png
name: stark
dob: 5AD
shirt color: red
physical address: Westros
phone model: S2
email id: me@stark.org
phone model: S2
name: tara
dob: 1ad
shirt color: red
physical address: Westros
email id: me@stark.org
Puede haber múltiples 'persona o' contacto '. Digamos que quiero encontrar a todas las personas con el modelo de teléfono 'S2'.
Puedo hacer un 'grep', eso solo devolvería esto:
phone model: S2
phone model: S2
Puedo usar el contexto antes / después en grep, pero eso es solo un número fijo de líneas antes / después que se imprimen. Con un contexto 'anterior' de 3, podría obtener algo como esto:
shirt color: red
physical address: Westros
phone model: S2
---
name: tara
dob: 1ad
phone model: S2
Pero eso no es lo que quiero. Quiero que aparezca todo el 'registro'. ¿Alguna pista sobre cómo hacer esto con los comandos estándar de Unix?
awk, pero, sinceramente, sería más fácil hacerlo con otras herramientas. ¿Por qué necesita herramientas estándar de Unix? ¿Puedes usar un lenguaje de scripting como Ruby o Python también? Esos a menudo vienen con todo tipo de distribuciones de Linux.