grep 带过滤器 grep,怎么样?

grep 带过滤器 grep,怎么样?

我所需要的只是 Zip 文件名。第一步我搜索了作者:

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

不管怎样,结果是:

邮编:/var/www/dir_de/html/dir1/dir2/7890971.zip
作者:test_autor
邮编:/var/www/dir_de/html/dir1/dir2/10567581.zip
作者:test_autor

但是,如上所述,Ziip 文件名。在第二步中,我尝试再次过滤第一次搜索的结果:

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

仅搜索文件名,不幸的是这不起作用。

我的问题。第二个 grep 过滤器应该如何“查找”以便我只获取 zip 文件名?

答案1

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

grep根据需要更改第一个。第二个grep过滤掉行尾包含非/字符后跟后缀的部分.zip

如果您知道您的 zip 文件仅包含数字,您可以[^/][[:digit:]].

答案2

与单awk表达:

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

相关内容