Uncia 1.3 — a big cat

If you thought cat -v was considered harmful, you haven't met my uncia.

The Unix programming philosophy is to write small utilities which can be piped together to build complex programs. The objection to cat -v is that looking at non-printing ASCII characters isn't what cat(1) is for, because now you have something more than just joining files head-to-tail. And since Rob Pike's 1983 paper, cat(1) has suffered even more creeping featurism.

At first sight, uncia(1) would appear to be even worse, given that it can do zillions of different things to text files. The subtlety lies in uncia's implementation: each different filter that uncia(1) implements is a separate class, and all of these classes can be chained together, much like commands being piped together on the command line. The implementation uses the C++ <iostream> interface, allowing the various classes to be re-used in other C++ programs. This is still the Unix philosophy, but it's implemented as a library at the <iostream> level, rather than a directory full of executables.

Input Filters:
ascii 85 (Adobe) decode, base 32 (MIME) decode, base-32-hex (MIME) decode, base 64 (MIME) decode, base 85 (atob) decode, column remove (colrm), crlf to nl (dos2unix), escape newline, expand, gunzip, hash comments, head, lower case, number lines (cat -n), paste, prefix remove, Primos text decode, quoted printable (MIME) decode, reverse (rev), reverse lines (tac), rot13, sort, tail, unique, upper case, uudecode, VMS text decode, xxdecode.

Output Filters:
ascii 85 (Adobe) encode, base 32 (MIME) encode, base-32-hex (MIME) encode, base 64 (MIME) encode, base 85 (btoa) encode, double space, fold, gzip, hexdump, lower case, nl to crlf (unix2dos), number lines (cat -n), prefix add, Primos text encocde, quoted printable (MIME) decode, reverse (rev), rot13, rot47, show nonprinting (cat -v), show tabs (cat -T), squeeze blank (cat -s), suffix add, tee, unexpand, upper case, uuencode, VMS text encode, xxencode.


There are several ways to obtain this software, either as source code or as pre-compiled binaries.


The Master Sources

The following files are available for download from this web site:

File Description
uncia-1.3.tar.gz The complete source.
uncia-1.3.pdf The reference manual.
uncia-1.3.ae The complete source, in aedist format.
debian/ Pre-built debian packages for Ubuntu 9.10 Karmic x86_64.



The best possible download speed for the source tarball will be from the SourceForge download pages.


Ubuntu Packages

If you use Ubuntu Linux, there are pre-built packages available for installation using the normal sudo apt-get install method, from this package archive (PPA).

Instructions are available there for how to manually add the PPA to your /etc/apt/sources.list file, but the following commands are sufficient on recent versions of Ubuntu:

sudo add-apt-repository ppa:pmiller-opensource/ppa
sudo apt-get update
sudo apt-get install uncia

The Bleeding Edge

Uncia is developed and maintained using Aegis, a transaction based software configuration management system.

Uncia developers may access the latest development changes through the Aegis web interface.

See Also

For a similar idea, applied to EPROM load files rather than text files, see the SRecord project.
For a similar idea, applied to file systems rather than EPROM load files, see the PlasticFS project.
Uncia is written and owned by Peter Miller <pmiller@opensource.org.au> and is freely distributable under the terms and conditions of the GNU GPL. There is more Software by Peter Miller at his home page.

SourceForge.net Logo This page is hosted by SourceForge.
This page has been accessed approximately number times since 24-Mar-2012.