.\" .\" uncia - a big cat .\" Copyright (C) 2008 Peter Miller .\" .\" This program is free software; you can redistribute it and/or modify .\" it under the terms of the GNU General Public License, version 3, as .\" published by the Free Software Foundation. .\" .\" This program is distributed in the hope that it will be useful, .\" but WITHOUT ANY WARRANTY; without even the implied warranty of .\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU .\" General Public License for more details. .\" .\" You should have received a copy of the GNU General Public License .\" along with this program. If not, see . .\" .ad l .hy 0 .so etc/version.so .br uncia \*(v) .br

Uncia \*(v) — 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:
column remove (colrm), crlf to nl (dos2unix), escape newline, expand, gunzip, hash comments, head, lower case, MIME quoted printable decode, MIME base 64 decode, number lines (cat -n), paste, prefix remove, reverse (rev), reverse lines (tac), rot13, sort, tail, unique, upper case, uudecode.

Output Filters:
base 64, double space, fold, gzip, hexdump, lower case, nl to crlf (unix2dos), number lines (cat -n), prefix add, MIME quoted printable, reverse (rev), rot13, rot47, show nonprinting (cat -v), show tabs (cat -T), squeeze blank (cat -s), suffix add, tee, unexpand, upper case, uuencode.
.br

Download

The following files are available for download:

.br .br
File Description
uncia-\*(v).tar.gz The complete source.
uncia-\*(v).ae The complete source, in aedist format.

See Also

For a similar idea, applied to EPROM load files rather than text files, see the SRecord project. .\" ------------------------------------------------------------------------ .br
.br .br Uncia is written and owned by Peter Miller <millerp@canb.auug.org.au> and is freely distributable under the terms and conditions of the GNU GPL. .br .br .fi Uncia is developed using Aegis, a transaction based software configuration management system. The Aegis repository for this project is available. .br .br .br .br There is more Software by Peter Miller at his home page. .br
.\" ------------------------------------------------------------------------ .br
SourceForge.net Logo This page is hosted by SourceForge.
This page has been accessed approximately number times since .ds MO1 Jan .ds MO2 Feb .ds MO3 Mar .ds MO4 Apr .ds MO5 May .ds MO6 Jun .ds MO7 Jul .ds MO8 Aug .ds MO9 Sep .ds MO10 Oct .ds MO11 Nov .ds MO12 Dec .nr y4 \n[yr]+1900 \n[dy]-\*[MO\n[mo]]-\n[y4].