--- zgrep.in +++ zgrep.in @@ -149,10 +149,18 @@ for i do + case $i in + *.bz2) + uncompress=bzip2 + ;; + *) + uncompress=gzip + ;; + esac # Fail if gzip or grep (or sed) fails. gzip_status=$( exec 5>&1 - (gzip -cdfq -- "$i" 5>&-; echo $? >&5) 3>&- | + ($uncompress -cdfq -- "$i" 5>&-; echo $? >&5) 3>&- | if test $files_with_matches -eq 1; then eval "$grep" >/dev/null && { printf '%s\n' "$i" || exit 2; } elif test $files_without_matches -eq 1; then