gzip 1.3
[gzip.git] / zgrep.in
blob9fcd8282bde148d2fbfd84ac8bbc4dff67cfe3e2
2 #!/bin/sh
4 # zgrep -- a wrapper around a grep program that decompresses files as needed
5 # Adapted from a version sent by Charles Levert <charles@comm.polymtl.ca>
7 PATH="BINDIR:$PATH"; export PATH
9 prog=`echo $0 | sed 's|.*/||'`
10 case "$prog" in
11         *egrep) grep=${EGREP-egrep}     ;;
12         *fgrep) grep=${FGREP-fgrep}     ;;
13         *)      grep=${GREP-grep}       ;;
14 esac
15 pat=""
16 while test $# -ne 0; do
17   case "$1" in
18   -e | -f) opt="$opt $1"; shift; pat="$1"
19            if test "$grep" = grep; then  # grep is buggy with -e on SVR4
20              grep=egrep
21            fi;;
22   -*)      opt="$opt $1";;
23    *)      if test -z "$pat"; then
24              pat="$1"
25            else
26              break;
27            fi;;
28   esac
29   shift
30 done
32 if test -z "$pat"; then
33   echo "grep through gzip files"
34   echo "usage: $prog [grep_options] pattern [files]"
35   exit 1
38 list=0
39 silent=0
40 op=`echo "$opt" | sed -e 's/ //g' -e 's/-//g'`
41 case "$op" in
42   *l*) list=1
43 esac
44 case "$op" in
45   *h*) silent=1
46 esac
48 if test $# -eq 0; then
49   gzip -cdfq | $grep $opt "$pat"
50   exit $?
53 res=0
54 for i do
55   if test $list -eq 1; then
56     gzip -cdfq "$i" | $grep $opt "$pat" > /dev/null && echo $i
57     r=$?
58   elif test $# -eq 1 -o $silent -eq 1; then
59     gzip -cdfq "$i" | $grep $opt "$pat"
60     r=$?
61   else
62     gzip -cdfq "$i" | $grep $opt "$pat" | sed "s|^|${i}:|"
63     r=$?
64   fi
65   test "$r" -ne 0 && res="$r"
66 done
67 exit $res