mirror of
https://github.com/freebsd/freebsd-src.git
synced 2024-12-04 05:58:57 +00:00
faster
average 2-3 x for option -h or -q 10 x handle option -q and -L better exit status, similar to grep (0: matches found 1: no matches found 2: error)
This commit is contained in:
parent
55f0df06bc
commit
63cdf05c43
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=15751
72
gnu/usr.bin/gzip/zgrep.getopt
Normal file
72
gnu/usr.bin/gzip/zgrep.getopt
Normal file
@ -0,0 +1,72 @@
|
||||
#!/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
|
Loading…
Reference in New Issue
Block a user