
必要なのは 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