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.