zcat과 cat을 투명하게 결합하는 도구가 있습니까? xyz.log.1 xyz.log.2.gz xyz.log.3.gz다음과 같은

로그 파일을 처리 할 때 일부는 덕분에 zip 파일로 끝납니다 logrotate. 따라서 다음과 같이 시도하면

$ zcat *

zcat xyz.log xyz.log.1 xyz.log.2.gz xyz.log.3.gz다음과 같은 명령 줄로 끝납니다 .

gzip: xyz.log: not in gzip format

예를 들어 출력을 파이프 할 수 있도록 file작동 방식 과 유사하게 마술 바이트를 가져 와서 결과를 사용 zcat하거나 사용 하는 도구가 있습니까?catgrep

NB : 스크립트를 작성할 수는 있지만 이미 도구가 있는지 묻고 있습니다.



답변

zless

zcatlibz에는 압축 파일과 압축되지 않은 파일 모두를 투명하게 읽을 수있는 API가 있기 때문에 불쌍한 것 같습니다 . 그러나 맨 페이지는이 내용 zcat이에 해당 한다고 말합니다 gunzip -c.


답변

-f또는 함께 사용해보십시오 --force:

zcat -f -- *

이후 zcat실행되는 단순한 스크립트입니다

exec gzip -cd "$@"

긴 옵션으로 번역

exec gzip --stdout --decompress "$@"

그리고 man gzip(강한 광산)에 따라 :

-f-강제
      파일에 여러 링크가 있어도 강제 압축 또는 압축 해제
      또는 해당 파일이 이미 존재하거나 압축 된 데이터가
      터미널에서 읽거나 씁니다. 입력 데이터가 형식이 아닌 경우
      gzip에 의해 인식되고 --stdout 옵션도 제공되면
      표준 출력으로 변경하지 않고 입력 데이터 : zcat이 cat로 작동하도록합니다 .

또한:

grep예를 들어 출력을 파이프 할 수 있도록

당신은 zgrep그것을 위해 사용할 수 있습니다 :

zgrep -- PATTERN *

아래 Stéphane의 의견을 참조하십시오.


답변

나는 같은 목적으로 정확하게 사용합니다.

{ cat /var/log/messages ; zcat /var/log/messages*.gz ; }| grep something | grep "something else" ....

답변

zutils라는 ztools (zcat, zgrep, ..)를 백엔드와 독립적으로 모든 압축 해제 도구를 통합하는 드롭 인 대체품이 있습니다. 따라서 동일한 명령으로 일반, lzma, gzipped, xz 파일을 투명하게 읽을 수 있습니다.

데비안 wheezy 이상에서 사용할 수 있으며 아마도 redhat / centos에서도 가능합니다.

프로젝트 페이지는 여기 nongnu.org

util 사용법을 설명하는 블로그 게시물 ( noone.org )


답변

이것은 zcat이 바이너리 인 RHEL 5.x에서 잘 작동합니다. zcat이 스크립트 인 RHEL 6.x (및 Ubuntu 12.x)에서는 실패합니다. 이 사용 잘 작동 할 수 있습니다.

zcat을 전혀 사용하지 않지만 zgrep은 압축되지 않은 파일도 제대로 처리하지 못합니다.


답변

압축 및 비 압축을 시간순으로 엽니 다.

ls -v syslog* | tac | xargs zcat -f | less

답변

래퍼는 어떻습니까?

$ cat xcat.sh
#!/bin/bash

for i in $@;do
        [ ! -z "$(file -i $i | grep "gzip")" ] && zcat $i || cat $i
done

$ bash xcat.sh plain.txt gzipped_text.gz