String search in multiple gziped files

I looked through the previous solutions, but did not find this specific anwer.

When I grep for a string in a list of regular files, it shows what file the string is in when it lists the occurances of the string.

I realize to do a string search in a directory of gzipped files, I can

gzcat * | grep -i Error

But, this only shows the occurance of the string and does not show which files the string occurs in.  So, I have to do the search manually against each file in the directory.  What do I do to have the output of  " gzcat * | grep -i Error "  show which files it finds the string.  Thanks for your help!

theoradicallyAsked:
Who is Participating?
 
chris_calabreseConnect With a Mentor Commented:
You want something along the lines of

ls *.gz | while read file
do  gzcat "$file" | grep -i Error | while read line
      do echo "$file: $line"
      done
done
0
 
ahoffmannCommented:
zgrep
0
 
TintinConnect With a Mentor Commented:
or possibly gzgrep depending on what Unix flavour you are on.
0
Cloud Class® Course: Microsoft Exchange Server

The MCTS: Microsoft Exchange Server 2010 certification validates your skills in supporting the maintenance and administration of the Exchange servers in an enterprise environment. Learn everything you need to know with this course.

 
stokesj56Commented:
An alternate that will print the file name above the lines that match:

echo *.gz | while read FN
do
    echo "${FN}:"
    gzcat "$FN" | grep -i Error
    echo ""
done

This will print every file name. If you want to only see the file names that contain the search then do something like this:

echo *.gz | while read FN
do
    gzcat "$FN" | grep -q Error
    if [ $? -eq 0 ]
    then
        echo "${FN}:"
        gzcat "$FN" | grep -i Error
        echo ""
    fi
done

This will be a little slower because it does 2 greps.
0
 
ahoffmannCommented:
re-enventing the wheel :-(
if there's a zcat, there's zgrep too
0
 
theoradicallyAuthor Commented:
gzgrep is what I was looking for - thanks tintin
gzgrep -i Error * - gives the filename and occurance of the string within it


Chris - your script worked , but was a little more than I was looking for


BYW,

when I do      which zcat  -   I get ... /bin/zcat
when I do      which zgrep -  I get    -   no zgrep in .....

Thanks for your input
0
 
ahoffmannCommented:
if the name is zgrep or gzgrep depends on your installation, rpm, make, whatever ...
anyway, you found what you need
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.