zgrep을 사용하여 패턴을 검색하고 여러 .gz 파일에서 행을 일치시킨 후 N 행을 인쇄합니다.
--
BSD zgrep에서는 각 파일 뒤에 구분 기호가 표시됩니다.
zgrep (BSD grep) 2.5.1-FreeBSD
$ zgrep "match string" -A 1 FileName1.log.gz FileName2.log.gz
FileName1.log.gz:match string
FileName1.log.gz-
--
FileName2.log.gz:match string
FileName2.log.gz-
하지만 GNU에서는 같은 상황을 볼 수 없습니다:
zgrep (gzip) 1.6
Copyright (C) 2010-2013 Free Software Foundation, Inc.
This is free software. You may redistribute copies of it under the terms of
the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
There is NO WARRANTY, to the extent permitted by law.
Written by Jean-loup Gailly.
# zgrep "match string" -A 1 FileName1.log.gz FileName2.log.gz
FileName1.log.gz:match string
FileName1.log.gz:
FileName2.log.gz:match string
FileName2.log.gz:
--group-separator를 시도했지만 단일 파일에서 일치 항목을 구분하는 것 같습니다.
GNU zgrep에서 비슷한 결과를 얻으려면 어떻게 해야 합니까?
답변1
zgrep
GNU (또는 FreeBSD 및 macOS에만 zgrep
해당되는 OpenBSD)를 사용하여 zgrep
유사한 출력을 얻을 수 없습니다 . 결과를 직접 사후 처리하지 않는 한 이는 간단합니다.
$ zgrep hello file*.gz | awk -F : 'NR > 1 && $1 != name { print "--" } { name = $1; print }'
file1.gz:hello world
--
file2.gz:hello world
--
file3.gz:hello world
--
file4.gz:hello world
--
file5.gz:hello world
zgrep
awk
이는 줄의 파일 이름 비트(첫 번째 비트 앞의 비트)가 변경될 때마다 :
구분 기호를 삽입하는 짧은 프로그램을 통해 출력을 전달합니다 .