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

相關內容