Add a BSD licensed zgrep written by me.
Much nicer than the old one, if I may say so. Thanks go to atatat for testing and suggestions.
This commit is contained in:
parent
f3abb712c4
commit
6ac2a4f4db
|
@ -1,24 +1,25 @@
|
|||
# $NetBSD: Makefile,v 1.6 2003/12/28 13:40:56 mrg Exp $
|
||||
# $NetBSD: Makefile,v 1.7 2003/12/28 17:26:00 wiz Exp $
|
||||
|
||||
PROG= gzip
|
||||
MAN= gzip.1 gzexe.1 zdiff.1 zforce.1 zmore.1 znew.1
|
||||
MAN= gzip.1 gzexe.1 zdiff.1 zforce.1 zgrep.1 zmore.1 znew.1
|
||||
|
||||
DPADD= ${LIBZ}
|
||||
LDADD= -lz
|
||||
|
||||
# XXX missing: zgrep
|
||||
SCRIPTS= zforce gzexe znew zmore zdiff
|
||||
SCRIPTS= gzexe zdiff zforce zgrep zmore znew
|
||||
|
||||
# XXX missing: zgrep.1->zegrep.1 zgrep.1->zfgrep.1
|
||||
MLINKS+= gzip.1 gunzip.1 \
|
||||
gzip.1 gzcat.1 \
|
||||
gzip.1 zcat.1 \
|
||||
zdiff.1 zcmp.1
|
||||
zdiff.1 zcmp.1 \
|
||||
zgrep.1 zegrep.1 \
|
||||
zgrep.1 zfgrep.1
|
||||
|
||||
# XXX missing: zgrep->zegrep zgrep->zfgrep
|
||||
LINKS+= ${BINDIR}/gzip ${BINDIR}/gunzip \
|
||||
${BINDIR}/gzip ${BINDIR}/gzcat \
|
||||
${BINDIR}/gzip ${BINDIR}/zcat \
|
||||
${BINDIR}/zdiff ${BINDIR}/zcmp
|
||||
${BINDIR}/zdiff ${BINDIR}/zcmp \
|
||||
${BINDIR}/zgrep ${BINDIR}/zegrep \
|
||||
${BINDIR}/zgrep ${BINDIR}/zfgrep
|
||||
|
||||
.include <bsd.prog.mk>
|
||||
|
|
|
@ -0,0 +1,112 @@
|
|||
#!/bin/sh
|
||||
|
||||
# Copyright (c) 2003 Thomas Klausner.
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions
|
||||
# are met:
|
||||
# 1. Redistributions of source code must retain the above copyright
|
||||
# notice, this list of conditions and the following disclaimer.
|
||||
# 2. Redistributions in binary form must reproduce the above copyright
|
||||
# notice, this list of conditions and the following disclaimer in the
|
||||
# documentation and/or other materials provided with the distribution.
|
||||
# 3. The name of the author may not be used to endorse or promote products
|
||||
# derived from this software without specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
||||
# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
grep=/usr/bin/grep
|
||||
zcat=/usr/bin/zcat
|
||||
|
||||
endofopts=0
|
||||
pattern_found=0
|
||||
grep_args=""
|
||||
|
||||
prg=$0
|
||||
|
||||
# handle being called 'zegrep' or 'zfgrep'
|
||||
case ${prg} in
|
||||
*zegrep)
|
||||
grep_args="-E";;
|
||||
*zfgrep)
|
||||
grep_args="-F";;
|
||||
esac
|
||||
|
||||
# skip all options and pass them on to grep taking care of options
|
||||
# with arguments, and if -e was supplied
|
||||
|
||||
while [ $# -gt 0 -a ${endofopts} -eq 0 ]
|
||||
do
|
||||
case $1 in
|
||||
# from GNU grep-2.5.1 -- keep in sync!
|
||||
-[ABCDXdefm])
|
||||
case $1 in
|
||||
-e)
|
||||
pattern_found=1;;
|
||||
*)
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ $# -lt 2 ]
|
||||
then
|
||||
echo "${prg}: missing argument for ${saved_arg} flag" >&2
|
||||
exit 1
|
||||
fi
|
||||
grep_args="${grep_args} $1 $2"
|
||||
shift 2
|
||||
;;
|
||||
--)
|
||||
grep_args="${grep_args} $1"
|
||||
shift
|
||||
endofopts=1
|
||||
;;
|
||||
-)
|
||||
endofopts=1
|
||||
;;
|
||||
-*)
|
||||
grep_args="${grep_args} $1"
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
# pattern to grep for
|
||||
endofopts=1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
# if no -e option was found, take next argument as grep-pattern
|
||||
if [ ${pattern_found} -lt 1 ]
|
||||
then
|
||||
if [ $# -lt 1 ]
|
||||
then
|
||||
echo "${prg}: missing pattern" >&2
|
||||
exit 1
|
||||
fi
|
||||
pattern=$1
|
||||
shift
|
||||
fi
|
||||
|
||||
# call grep ...
|
||||
if [ $# -lt 1 ]
|
||||
then
|
||||
# ... on stdin
|
||||
${zcat} - | ${grep} ${grep_args} ${pattern} -
|
||||
else
|
||||
# ... on all files given on the command line
|
||||
while [ $# -gt 0 ]
|
||||
do
|
||||
${zcat} -- "$1" | ${grep} -H --label="${1}" ${pattern} ${grep_args} -
|
||||
shift
|
||||
done
|
||||
fi
|
||||
|
||||
exit 0
|
|
@ -0,0 +1,96 @@
|
|||
.\" $NetBSD: zgrep.1,v 1.1 2003/12/28 17:26:00 wiz Exp $
|
||||
.\"
|
||||
.\" Copyright (c) 2003 Thomas Klausner.
|
||||
.\"
|
||||
.\" Redistribution and use in source and binary forms, with or without
|
||||
.\" modification, are permitted provided that the following conditions
|
||||
.\" are met:
|
||||
.\" 1. Redistributions of source code must retain the above copyright
|
||||
.\" notice, this list of conditions and the following disclaimer.
|
||||
.\" 2. Redistributions in binary form must reproduce the above copyright
|
||||
.\" notice, this list of conditions and the following disclaimer in the
|
||||
.\" documentation and/or other materials provided with the distribution.
|
||||
.\" 3. The name of the author may not be used to endorse or promote products
|
||||
.\" derived from this software without specific prior written permission.
|
||||
.\"
|
||||
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
||||
.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
.\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
.Dd December 28, 2003
|
||||
.Dt ZGREP 1
|
||||
.Os
|
||||
.Sh NAME
|
||||
.Nm zgrep ,
|
||||
.Nm zegrep ,
|
||||
.Nm zfgrep
|
||||
.Nd print lines matching a pattern in gzip-compressed files
|
||||
.Sh SYNOPSIS
|
||||
.Nm
|
||||
.Op Ar grep-flags
|
||||
.Op Fl -
|
||||
.Ar pattern
|
||||
.Op Ar files ...
|
||||
.Pp
|
||||
.Nm zegrep
|
||||
.Op Ar grep-flags
|
||||
.Op Fl -
|
||||
.Ar pattern
|
||||
.Op Ar
|
||||
.Pp
|
||||
.Nm zfgrep
|
||||
.Op Ar grep-flags
|
||||
.Op Fl -
|
||||
.Ar pattern
|
||||
.Op Ar
|
||||
.Sh DESCRIPTION
|
||||
.Nm
|
||||
runs
|
||||
.Xr grep 1
|
||||
on
|
||||
.Ar files
|
||||
or stdin, if no
|
||||
.Ar files
|
||||
argument is given, after decompressing them with
|
||||
.Xr zcat 1 .
|
||||
.Pp
|
||||
The
|
||||
.Ar grep-flags
|
||||
and
|
||||
.Ar pattern
|
||||
arguments are passed on to
|
||||
.Xr grep 1 .
|
||||
If an
|
||||
.Fl e
|
||||
flag is found in the
|
||||
.Ar grep-flags ,
|
||||
.Nm
|
||||
will not look for a
|
||||
.Ar pattern
|
||||
argument.
|
||||
.Pp
|
||||
.Nm zegrep
|
||||
calls
|
||||
.Xr egrep 1 ,
|
||||
while
|
||||
.Nm zfgrep
|
||||
calls
|
||||
.Xr fgrep 1 .
|
||||
.Sh RETURN VALUES
|
||||
In case of missing arguments or missing pattern,
|
||||
1 will be returned, otherwise 0.
|
||||
.Sh SEE ALSO
|
||||
.Xr egrep 1 ,
|
||||
.Xr fgrep 1 ,
|
||||
.Xr grep 1 ,
|
||||
.Xr gzip 1 ,
|
||||
.Xr zcat 1
|
||||
.Sh AUTHORS
|
||||
.An Thomas Klausner
|
||||
.Aq wiz@NetBSD.org
|
Loading…
Reference in New Issue