blm(1)
NAME
blm - manipulate line oriented files using boolean set operations and,
or, exclusive or, and set difference.
SYNOPSIS
blm firstfile [+afile] [-bfile] [%cfile] [\&dfile] [@]...
DESCRIPTION
blm reads in one or more line-oriented files and considers each file as
a set of strings. Blank lines do not represent the empty string, but
instead are ignored. The first command line argument shown as firstfile above represents the starting set of lines. The arguments are
then interpretted according to Forward Polish Notation (FPN), as
described by Jan Lukasiewicz. Jan invented the first widely accepted
non-classical logic as well as this excellent notation. FPN requires no
parentheses to describe arbitrarily complex combinations of any number
of binary operations.
Each successive command line argument after the first represents an
operation that starts with the accumulator set A, applies the set operation A op B, and then stores the result in the accumulator A. Another
set operation may then be performed until all listed arguments are used
up. The result is then printed in lexicographical order to standard
output. Four operations are supported: Set union is the plus symbol
(+). Set intersection is the and symbol ( & ) which must be escaped in
most shells. Set difference is the subtraction symbol (-). And set
exclusive or is represented by the percent sign (%). There is also an
optional shuffling symbol toggle, (@), that means to randomly shuffle
all output lines instead of sorting in lexicographical order. Thus, a
simple way to randomize lines in a file is as follows:
blm firstfile @
- If a filename of "-" is listed, it represents the standard input to
blm.
- If none of the four option characters appears at the beginning of a filename argument, set addition (+) is assumed.
ENVIRONMENT
No environment variables.
BUGS
Please report bugs to the Debian BTS.
AUTHOR
- Rudi Cilibrasi <cilibrar@cilibrar.com>