bKashOST
bKashOST

Reputation: 149

Want to grep in .tar.gz file in Solaris

i have a file in .tar.gz format in solaris. i want to grep some line from that. i am using zipgrep command but unable to find the line. Below is my sample file and command that i am using.

Sample file:

BD201701.tar.gz

BD201702.tar.gz

BD201703.tar.gz

i am using below command to search a line that contains bangladesh.

zipgrep 'bangladesh' BD2017*

But it;s showing below error.

[BD201701.tar.gz]
End-of-central-directory signature not found.  Either this file is not
a zipfile, or it constitutes one disk of a multi-part archive.  In the
latter case the central directory and zipfile comment will be found on
the last disk(s) of this archive.
zipinfo:  cannot find zipfile directory in one of BD201701.tar.gz or
      BD201701.tar.gz.zip, and cannot find BD201701.tar.gz.ZIP, period.
/usr/bin/zipgrep: test: argument expected

Upvotes: 1

Views: 3571

Answers (3)

divyang
divyang

Reputation: 21

zgrep does not work on solaris servers. In case the requirement is to find a pattern in a/all file(s) inside a directory given that the files are zipped, the following command can be used.

gzgrep 'pattern' filename

or

gzgrep 'bangladesh' BD2017*

Upvotes: 2

tso
tso

Reputation: 4924

use zgrep:

zgrep 'bangladesh' BD2017*

Upvotes: 1

datenwolf
datenwolf

Reputation: 162299

zipgrep has been made for processing PKZIP archive files. In PKZIP archives the compression is applied individually on each contained file, so the process boils down to a sequence of operations like this (not actual code!):

foreach file in archive:
    unzip file to tmpfile
    grep tmpfile

A compressed tar archive is different. First you pack a large bunch of files into an archive, and then the compression is applied to the whole bunch. So to search inside that the whole archive has to be unpacked first, i.e. something like this (pseudocode again):

make and change to temporary directory
tar -xZf ${archive}
grep -R ${seachstring} ./

However a tar archive itself is just a bunch of files "glued" together, with some information about their filename and size inbetween. So you could simply decompress the archive into a pipe, disregarding file spearation and search through that

zcat file | grep

Upvotes: 2

Related Questions