This is dm.man in view mode; [Download] [Up]
DM(1) |STAT November 26, 1985
NAME
dm - data manipulation with conditional transformations
SYNOPSIS
dm [Efile] [expressions]
DESCRIPTION
_d_m is a data manipulating program for column extraction from files,
possibly based on conditions, and production of algebraic combinations
of columns. _d_m reads whitespace separated fields on each line of its
input. _d_m takes a series of expressions, and for each line of the
input, _d_m reevaluates and prints the values of those expressions.
Numerical values of fields on a line can be accessed by the letter 'x'
followed by a column number. Character strings can be accessed by the
letter 's' followed by a column number. For example, for the input
line:
12 45.2
s1 is the string '12', x2 is the number 45.2 (which is not the same as
s2, the string '45.2').
_C_o_l_u_m_n _E_x_t_r_a_c_t_i_o_n. Columns are extracted with string expressions. To
extract the 3rd, 8th, 1st and 2nd columns (in that order) from "file,"
one would type:
dm s3 s8 s1 s2 < file
_A_l_g_e_b_r_a_i_c _T_r_a_n_s_f_o_r_m_a_t_i_o_n_s. To print, in order, the sum of the columns
1 and 2, the difference of columns 3 and 4, and the square root of the
sum of squares of the 1st and 3rd columns, one could type the command:
dm "x1+x2" "x3-x4" "(x1*x1+x3*x3)^.5"
There are the usual mathematical functions that allow expressions
like:
dm "exp(x1) + log(log(x2))" "floor (x1/x2)" "sin x1"
_T_e_s_t_i_n_g _C_o_n_d_i_t_i_o_n_s. Expressions can be conditionally evaluated by
comparing values. To print the ratio of x1 and x2, and check the
value of x2 before division and print 'error' if x2 is 0, one could
type:
dm "if x2 = 0 then 'error' else x1/x2"
To extract lines in which two columns are the same string, say the 5th
and 2nd, one would type:
dm "if s5 = s2 then INPUT else NEXT"
_O_t_h_e_r _F_e_a_t_u_r_e_s. _d_m has comparison, algebraic, and logical operators,
and special variables to take control in exceptional conditions.
These include: INPUT, the current input line in string form; INLINE,
the current input line number; N, the field count in INPUT; SUM, the
sum of the numbers in INPUT; RAND, a uniform random number different
for each line; NIL, an expression that causes no output; NEXT, which
terminates evaluation on INPUT and goes to the next line; and EXIT,
which terminates all processing.
LIMITS
Input fields longer than 15 characters are truncated silently. The
number of input columns, output expressions, and expression constants
are limited to 100.
SEE ALSO
The DM Manual in The |STAT Handbook
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.