Working with compressed files
Linux usually provides a couple of command piping gzip
zgrep, zcat, zdiff, zless, zmore, zegrep,...
Here is a simple extension of tail and head for zipped files, that you can call ztail and zhead (example is for tail, replace "tail" with "head" everywhere to get zhead) and add to your own /bin directory:
Caution:
very basic version, works when the options starts with '-' so it works with '-n10' but fails with '-n 10'. Should be easily improved...
<source lang="bash">
- !/bin/bash
- based on zless
PATH=${GZIP_BINDIR-'/bin'}:$PATH
version="ztail 0.1"
usage="Usage: $0 [OPTIONS]... [FILES]...
Same as the 'tail' command, but operate on the uncompressed contents of any compressed FILEs. Options are the same as for 'tail'."
case $1 in --help) exec echo "$usage";; -h) exec echo "$usage";; --version) exec echo "$version";; esac
options="" count=0 for i in $@; do str="$i" if test -f $i && [ ${str:(-3)} = ".gz" ]; then
files[++count]=$str
else
if [ ${str:0:1} = "-" ] && [ $str != "-v" ] && [ $str != "--verbose" ]; then
options=$options"$i "
elif [ $str != "-v" ] && [ $str != "--verbose" ]; then echo -ne "***Warning: $i is neither a regular zip file or a regular option***\n\n" fi
fi done
if [ $count -gt 0 ]; then
if [ $count -eq 1 ]; then exec gzip -cd ${files[1]} | tail $options else for j in `seq 1 $count`; do echo "==>"${files[j]}"<==" exec gzip -cd ${files[j]} | tail $options done fi
else
echo -ne "***Warning: no regular zip files given***\n\n" exec echo "$usage"
fi </source>