Grep

grep 與過濾器 grep,如何?

  • November 25, 2019

我只需要 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 文件名?

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

根據需要更改第一個grep。第二個grep過濾掉行尾包含非/字元後跟.zip後綴的部分。

如果您知道您的 zip 文件只包含數字,則可以[^/]使用[[:digit:]].

用單一**awk**表達式:

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

引用自:https://unix.stackexchange.com/questions/554007