73 lines
1.4 KiB
Plaintext
73 lines
1.4 KiB
Plaintext
|
#!/bin/sh
|
||
|
# (c) Wolfram Schneider, Berlin. April 1996.
|
||
|
#
|
||
|
# zgrep - search possibly compressed files for a regular expression
|
||
|
#
|
||
|
# $Id: zgrep,v 1.4 1996/04/28 18:43:47 wosch Exp $
|
||
|
|
||
|
|
||
|
PATH=/bin:/usr/bin:$PATH; export PATH
|
||
|
|
||
|
# grep variant
|
||
|
case "$0" in
|
||
|
*egrep) grep=${EGREP-egrep} ;;
|
||
|
*fgrep) grep=${FGREP-fgrep} ;;
|
||
|
*) grep=${GREP-grep} ;;
|
||
|
esac
|
||
|
|
||
|
gzip=gzip gzipopt="-cdfq" pattern= grepopt= files= line= header=
|
||
|
set -- `getopt "0123456789A:B:CEFGVX:bce:f:hiLlnqsvwxy" "$@"`
|
||
|
|
||
|
# check options
|
||
|
while :
|
||
|
do
|
||
|
case "$1" in
|
||
|
--) shift; break;; # EOF options
|
||
|
-e|-f) pattern="$1 $2"; shift;; # -f file
|
||
|
-l|-L) line=$1; grepopt="$grepopt $1";;
|
||
|
-h|-q) header=$1; grepopt="$grepopt $1";;
|
||
|
*) grepopt="$grepopt $1";; # rest
|
||
|
esac
|
||
|
shift
|
||
|
done
|
||
|
|
||
|
# check pattern
|
||
|
case X"$pattern" in
|
||
|
X) case $# in
|
||
|
0) echo "usage: $0 [grep_options] pattern [files]"; exit 1;;
|
||
|
*) pattern=$1; shift;;
|
||
|
esac
|
||
|
esac
|
||
|
|
||
|
|
||
|
files="$@"
|
||
|
# no shell loop neccessary for option -q or -h
|
||
|
# and a single file or reading from stdin
|
||
|
case "$header"X"$#" in
|
||
|
-h*|-q*|X0|X1) $gzip $gzipopt $files | $grep $grepopt $pattern
|
||
|
exit $?;;
|
||
|
esac
|
||
|
|
||
|
|
||
|
exit=1
|
||
|
for f in $files
|
||
|
do
|
||
|
case "$line" in
|
||
|
-l|-L) if $gzip $gzipopt $f |
|
||
|
$grep $grepopt $pattern >/dev/null
|
||
|
then
|
||
|
echo $f
|
||
|
fi
|
||
|
;;
|
||
|
*) $gzip $gzipopt $f | $grep $grepopt $pattern |
|
||
|
sed "s%^%${f}:%";;
|
||
|
esac
|
||
|
|
||
|
case $? in
|
||
|
2) exit=$?;;
|
||
|
0) case "$exit" in 2);; 1) exit=0;; esac;;
|
||
|
esac
|
||
|
done
|
||
|
|
||
|
exit $exit
|