grep とフィルター grep はどのように使用するのですか?

grep とフィルター grep はどのように使用するのですか?

必要なのは Zip ファイル名だけです。最初のステップでは、作成者を検索しました。

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

何がうまくいったにせよ、結果は次の通りでした。

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

しかし、上で述べたように、Ziip ファイル名。2 番目のステップでは、最初の検索の結果を再度フィルタリングしようとしました。

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

ファイル名のみを検索する場合、残念ながらこれは機能しません。

質問です。zip ファイル名だけを取得するには、2 番目の grep フィルターをどのように「設定」すればよいでしょうか。

答え1

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

grep必要に応じて最初の部分を変更します。2 番目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

関連情報