필터 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"

안타깝게도 파일 이름만 검색하면 작동하지 않습니다.

내 질문. zip 파일 이름만 얻으려면 두 번째 grep 필터를 어떻게 "찾아야" 합니까?

답변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

관련 정보