grep com filtro grep, como?

grep com filtro grep, como?

Tudo que preciso é o nome do arquivo Zip. Na primeira etapa procurei o autor:

egrep -ni -B1 --color "$autor: test_autor" file_search_v1.log > result1.log

o que quer que tenha funcionado, o resultado foi:

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

Mas, como mencionado acima, o nome do arquivo Ziip. Na segunda etapa tentei filtrar novamente o resultado da primeira pesquisa:

egrep -ni -B1 --color "$autor: test_autor" file_search_v1.log | xargs grep -i -o "\/[[:digit:]]]\.zip"

para procurar apenas pelo nome do arquivo, infelizmente isso não funciona.

Minha pergunta. Como deve ser a "aparência" do segundo filtro grep para que eu obtenha apenas o nome do arquivo zip?

Responder1

grep -B1 "$autor: test_autor" file_search_v1.log | grep -o "[^/]*\.zip$"

Altere o primeiro grepconforme necessário. O segundo grepfiltra as partes no final da linha que contêm não /caracteres seguidos do .zipsufixo.

Se você sabe que seus arquivos zip contêm apenas dígitos, você pode trocá-los [^/]por [[:digit:]].

Responder2

Com solteiroawkexpressão:

$ author="test_autor"
$ awk -v pat="author: $author" '$0 ~ pat{ sub(/^.*\//, "", zip); print zip }{ zip=$0 }' file
7890971.zip
10567581.zip

informação relacionada