Cita:
Iniciado por AlvaroG A ver si entendí:
Hacer una búsqueda con contexto de un "palabro", luego buscar en el resultado la última palabra de la línea coincidente (no del contexto), y hacer una nueva búsqueda en el mismo archivo, de esa última palabra.
awk hace muy sencillo encontrar la última palabra, simplemente tendrías que usar
awk '{ print $NF }'
tee bifurca su entrada, de tal manera que podés mostrar el texto en la pantalla al mismo tiempo que lo redirigís a un archivo o a otro proceso.
Podés usar variables para guardar el término a buscar, podés usar archivos temporales, o podés complicar el código haciendo algo como
Código BASH:
Ver originalPALABRO=casa
ARCHIVO=mi_fichero.txt
grep -B 1 -A 2 "$PALABRO" "$ARCHIVO" | tee >( TERMINO=$(awk '/'$PALABRO'/ { print $NF }'); grep $TERMINO "$ARCHIVO" )
la salida de
grep es redirigida por
tee a la salida estándar (pantalla) y además a la subshell, donde se ejecuta
awk para obtener la última palabra, se guarda ésta en una variable, y se ejecuta un nuevo
grep.
Lo que te salga mejor :)
@AlcaroG muchas gracias!!!
la verdad es que has pillado perfectamente toda la idea, pero seguramente no me he explciado bien en la busqueda que quiero hacer dentro de la busqueda ya lanzada.
LA primera busqueda con grep me busca la palabra "palabro"
La seguda busqueda se debe de realizar sobre las lineas que se devuelvan de la primera busqueda pero no quiero que me tome la útima palabra de cada linea, quiero que me tome únicamente la última palabra de una linea concreta que me va a mostrar y que tiene , siempre, esta estructura:
mi casa tiene una palabro y está en madrid.
La parte fija de esta linea es: "mi casa tiene una palabro y está en"
y la parte que varia y quiero usar para que me busque de nuevo es " madrid"
¿me he explciado bien?
con lo que me has pasado me busca de todas las salidas de lineas la última palabra y en mi ejemplo , quiero la busqueda sobre una linea especifica para su última palabra.
MUCHAS GRACIAS!!!!!!!