summaryrefslogtreecommitdiffstats
path: root/gnu/usr.bin/gzip/zgrep
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/usr.bin/gzip/zgrep')
-rw-r--r--gnu/usr.bin/gzip/zgrep72
1 files changed, 72 insertions, 0 deletions
diff --git a/gnu/usr.bin/gzip/zgrep b/gnu/usr.bin/gzip/zgrep
new file mode 100644
index 0000000..bcc10cc
--- /dev/null
+++ b/gnu/usr.bin/gzip/zgrep
@@ -0,0 +1,72 @@
+#!/bin/sh
+
+# zgrep -- a wrapper around a grep program that decompresses files as needed
+# Adapted from a version sent by Charles Levert <charles@comm.polymtl.ca>
+
+PATH="/usr/local/bin:$PATH"; export PATH
+
+prog=`echo $0 | sed 's|.*/||'`
+case "$prog" in
+ *egrep) grep=${EGREP-egrep} ;;
+ *fgrep) grep=${FGREP-fgrep} ;;
+ *) grep=${GREP-grep} ;;
+esac
+A=
+fileno=0
+pat=""
+while test $# -ne 0; do
+ case "$1" in
+ -e | -f) opt="$opt $1"; shift; pat="$1"
+ if test "$grep" = grep; then # grep is buggy with -e on SVR4
+ grep=egrep
+ fi;;
+ -*) opt="$opt $1";;
+ *) if test -z "$pat"; then
+ pat="$1"
+ else
+ fileno=`expr $fileno + 1`
+ eval A$fileno=\$1
+ A="$A \"\$A$fileno\""
+ fi
+ ;;
+ esac
+ shift
+done
+
+if test -z "$pat"; then
+ echo "grep through gzip files"
+ echo "usage: $prog [grep_options] pattern [files]"
+ exit 1
+fi
+
+list=0
+silent=0
+op=`echo "$opt" | sed -e 's/ //g' -e 's/-//g'`
+case "$op" in
+ *l*) list=1
+esac
+case "$op" in
+ *h*) silent=1
+esac
+
+if test $fileno -eq 0; then
+ gzip -cdfq | $grep $opt "$pat"
+ exit $?
+fi
+eval set "$A" # files in $1, $2 ...
+
+res=0
+for i do
+ if test $list -eq 1; then
+ gzip -cdfq "$i" | $grep $opt "$pat" > /dev/null && echo $i
+ r=$?
+ elif test $# -eq 1 -o $silent -eq 1; then
+ gzip -cdfq "$i" | $grep $opt "$pat"
+ r=$?
+ else
+ gzip -cdfq "$i" | $grep $opt "$pat" | sed "s|^|${i}:|"
+ r=$?
+ fi
+ test "$r" -ne 0 && res="$r"
+done
+exit $res
OpenPOWER on IntegriCloud