diff options
Diffstat (limited to '')
-rw-r--r-- | zgrep.in | 137 |
1 files changed, 2 insertions, 135 deletions
@@ -1,136 +1,3 @@ #! /bin/sh -# Zgrep - Grep wrapper for compressed files. -# Copyright (C) 2008, 2009 Antonio Diaz Diaz. -# -# This script is free software: you have unlimited permission -# to copy, distribute and modify it. - -LC_ALL=C -export LC_ALL -args= -have_pat=0 -list=0 -no_name=0 -two_hyphens=0 - -# Loop over args until pattern is found -while [ -n "$1" ] ; do - - case "$1" in - --help | --he* | -h) - echo "Zgrep - Grep wrapper for compressed files." - echo - echo "Zgrep is a wrapper script around the grep command that allows" - echo "transparent search on any combination of compressed and non-compressed" - echo "files. If any given file is compressed, its uncompressed content is" - echo "used. If a given file does not exist, zgrep tries the compressed file" - echo "names corresponding to the supported compressors. If no files are" - echo "specified, data is read from standard input, decompressed if needed, and" - echo "fed to grep. Data read from standard input must be of the same type; all" - echo "uncompressed or all compressed with the same compressor." - echo "The supported compressors are bzip2, gzip, lzip and xz." - echo - echo "Zegrep is a shortcut for \"zgrep -E\"" - echo "Zfgrep is a shortcut for \"zgrep -F\"" - echo - echo "Usage: $0 [OPTIONS] [GREP_OPTIONS] PATTERN [FILES]" - echo - echo "GREP_OPTIONS are passed directly to grep." - echo "The exit status from grep is preserved." - echo - echo "Options:" - echo " -h, --help display this help and exit" - echo " -V, --version output version information and exit" - echo - echo "Report bugs to zutils-bug@nongnu.org" - echo "Zutils home page: http://www.nongnu.org/zutils/zutils.html" - exit 0 ;; - --version | --ve* | -V) - echo "Zgrep (zutils) VERSION" - echo "Copyright (C) 2009 Antonio Diaz Diaz." - echo "This script is free software: you have unlimited permission" - echo "to copy, distribute and modify it." - exit 0 ;; - -[drRzZ] | --di* | --exc* | --inc* | --nu* | --rec*) - echo "$0: option $1 not supported" - exit 1 ;; - -e?* | -f?* | --file=* | --reg*=*) - args="${args} $1"; have_pat=1 ;; - -e | -f | --file | --reg*) - args="${args} $1 $2"; shift; have_pat=1 ;; - --*=*) - args="${args} $1" ;; - -[ABCDm] | --af* | --be* | --binary-* | --con* | --de* | --[lm]a*) - args="${args} $1 $2"; shift ;; - -l | --files-with-*) - args="${args} $1"; list=1 ;; - -h | --no-f*) - args="${args} $1"; no_name=1 ;; - --) - shift ; two_hyphens=1 ; break ;; - -?*) - args="${args} $1" ;; - *) - if [ ${have_pat} = 0 ] ; then args="${args} $1"; have_pat=1 - else break - fi ;; - esac - shift -done - -if [ ${have_pat} = 0 ] ; then - echo "$0: Pattern not found; use --help for usage." 1>&2 - exit 1 -fi - -if [ $# = 0 ] ; then - bindir=`echo "$0" | sed -e 's,[^/]*$,,'` - prog_name=`"${bindir}"zutils -t` - case "${prog_name}" in - bzip2 | gzip | lzip | xz) prog="${prog_name} -cdfq" ;; - *) prog=cat ;; - esac - { "${bindir}"zutils -m ${prog_name} ; cat ; } | ${prog} | grep ${args} - exit $? -fi - -retval=0 -for i in "$@" ; do - if [ "$i" = "--" ] && [ ${two_hyphens} = 0 ] ; then two_hyphens=1 - else - if [ ! -f "$i" ] ; then - if [ -f "$i.gz" ] ; then i="$i.gz" - elif [ -f "$i.bz2" ] ; then i="$i.bz2" - elif [ -f "$i.lz" ] ; then i="$i.lz" - elif [ -f "$i.xz" ] ; then i="$i.xz" - else - echo "$0: File \"$i\" not found or not a regular file" 1>&2 - if [ ${retval} = 0 ] ; then retval=1 ; fi - continue - fi - fi - bindir=`echo "$0" | sed -e 's,[^/]*$,,'` - prog_name=`"${bindir}"zutils -t -- "$i"` - case "${prog_name}" in - bzip2 | gzip | lzip | xz) prog="${prog_name} -cdfq" ;; - *) prog=cat ;; - esac - if [ ${list} = 1 ] ; then - ${prog} -- "$i" | grep ${args} 2>&1 > /dev/null && echo "$i" - r=$? - elif [ $# = 1 ] || [ ${no_name} = 1 ] ; then - ${prog} -- "$i" | grep ${args} - r=$? - else - j=`printf "%s" "$i" | sed -e 's,\\\\,\\\\\\\\,g'` - j=`printf "%s" "$j" | sed -e 's,|,\\\\|,g'` - j=`printf "%s" "$j" | sed -e 's,&,\\\\&,g'` - j=`printf "%s" "$j" | tr '\n' ' '` - ${prog} -- "$i" | grep ${args} | sed -e "s,^,${j}:," - r=$? - fi - [ $r != 0 ] && retval="$r" - fi -done - -exit ${retval} +bindir=`echo "$0" | sed -e 's,[^/]*$,,'` +exec "${bindir}"zutils --zgrep "$@" |