Difference between revisions of "Working with compressed files"
From LPTMS Wiki
m |
m |
||
Line 8: | Line 8: | ||
<source lang="bash"> | <source lang="bash"> | ||
#!/bin/bash | #!/bin/bash | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
# based on zless | # based on zless | ||
Line 27: | Line 13: | ||
PATH=${GZIP_BINDIR-'/bin'}:$PATH | PATH=${GZIP_BINDIR-'/bin'}:$PATH | ||
− | version="ztail 0.1 | + | version="ztail 0.1" |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
usage="Usage: $0 [OPTIONS]... [FILES]... | usage="Usage: $0 [OPTIONS]... [FILES]... |
Revision as of 16:08, 11 December 2011
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...
#!/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