
Todo lo que necesito es el nombre del archivo Zip. En el primer paso busqué el autor:
egrep -ni -B1 --color "$autor: test_autor" file_search_v1.log > result1.log
Lo que sea que funcionó, el resultado fue:
zip: /var/www/dir_de/html/dir1/dir2/7890971.zip
autor: test_autor
zip: /var/www/dir_de/html/dir1/dir2/10567581.zip
autor: test_autor
Pero, como se mencionó anteriormente, el nombre del archivo Ziip. En el segundo paso intenté filtrar nuevamente el resultado de la primera búsqueda:
egrep -ni -B1 --color "$autor: test_autor" file_search_v1.log | xargs grep -i -o "\/[[:digit:]]]\.zip"
para buscar sólo el nombre del archivo, lamentablemente esto no funciona.
Mi pregunta. ¿Cómo debería "verse" el segundo filtro grep para que solo obtenga el nombre del archivo zip?
Respuesta1
grep -B1 "$autor: test_autor" file_search_v1.log | grep -o "[^/]*\.zip$"
Cambie el primero grep
según sea necesario. El segundo grep
filtra las partes al final de la línea que contienen no /
caracteres seguidos del .zip
sufijo.
Si sabe que sus archivos zip solo contienen dígitos, puede intercambiarlos [^/]
con [[:digit:]]
.
Respuesta2
con solteroawk
expresión:
$ author="test_autor"
$ awk -v pat="author: $author" '$0 ~ pat{ sub(/^.*\//, "", zip); print zip }{ zip=$0 }' file
7890971.zip
10567581.zip