Rdb: Ruby-Nachbau der MWC /rdb-Werkzeuge
This commit is contained in:
+189
@@ -0,0 +1,189 @@
|
||||
.TH row "" "" "/rdb Command"
|
||||
.PC "Make a new table where rows match logical condition"
|
||||
\fBrow '\fIcolumn condition column-or-value ..\fB' < \fItable\fR
|
||||
.PP
|
||||
.II "table^split"
|
||||
.II "table^create new"
|
||||
.II "row^select via expression"
|
||||
The command
|
||||
.B row
|
||||
creates a new table from
|
||||
.IR table .
|
||||
The new table
|
||||
consists of only those rows that meet
|
||||
.IR condition .
|
||||
.PP
|
||||
.B row
|
||||
uses a script written in the
|
||||
.B awk
|
||||
language, which gives you great power for specifying the logical condition.
|
||||
.PP
|
||||
Several conditional expressions can be combined with the
|
||||
logical AND (&&) and OR (||) operators.
|
||||
Because the logical conditions are represented by special characters,
|
||||
they must be enclosed by apostrophes, to protect them from being
|
||||
interpreted by the shell.
|
||||
If you have special characters within a column name,
|
||||
enclose the column name in quotation marks.
|
||||
.SH Example
|
||||
First a simple example.
|
||||
Consider table
|
||||
.B inventory :
|
||||
.DM
|
||||
Item Onhand Cost Value Description
|
||||
---- ------ ---- ----- -----------
|
||||
1 3 5 15 rubber gloves
|
||||
2 100 1 100 test tubes
|
||||
3 5 8 40 clamps
|
||||
4 23 2 51 plates
|
||||
5 99 2 97 cleaning cloth
|
||||
6 89 18 1602 bunsen burners
|
||||
7 5 175 875 scales
|
||||
.DE
|
||||
.PP
|
||||
To make a table of all of the parts that cost more that $5, type:
|
||||
.DM
|
||||
row 'Cost > 5' < inventory
|
||||
.DE
|
||||
.PP
|
||||
The new table appears as follows:
|
||||
.DM
|
||||
Item Onhand Cost Value Description
|
||||
---- ------ ---- ----- -----------
|
||||
3 5 8 40 clamps
|
||||
6 89 18 1602 bunsen burners
|
||||
7 5 175 875 scales
|
||||
.DE
|
||||
.PP
|
||||
Now a more complex example.
|
||||
If you want a table of all the burners
|
||||
and of all of the items of which we have fewer than ten in stock, type:
|
||||
.DM
|
||||
row 'Description ~ /burner/ || Onhand < 10' < inventory
|
||||
.DE
|
||||
.PP
|
||||
The new table appears as follows:
|
||||
.DM
|
||||
Item Onhand Cost Value Description
|
||||
---- ------ ---- ----- -----------
|
||||
1 3 5 15 rubber gloves
|
||||
3 5 8 40 clamps
|
||||
6 89 18 1602 bunsen burners
|
||||
7 5 175 875 scales
|
||||
.DE
|
||||
.PP
|
||||
The string
|
||||
.B "~ /burner/"
|
||||
searches for the string ``burner'' anywhere in the column.
|
||||
The double pipe (||) means logical OR.
|
||||
.SH "Column Names"
|
||||
The commands
|
||||
.BR row ,
|
||||
.BR compute ,
|
||||
and
|
||||
.B validate
|
||||
recognize column names as upper- and lower-case letters,
|
||||
digits, and the underscore `_'.
|
||||
The regular expression is [A-Za-z0-9_].
|
||||
If you have any other characters in your column names, put
|
||||
apostrophes or quotation marks around them.
|
||||
.PP
|
||||
.B row
|
||||
compares the recognized strings with the table's head line.
|
||||
Only if it finds a match does it convert the string
|
||||
to the \fB$1, $2...\fR column positions that
|
||||
.B awk
|
||||
needs.
|
||||
.SH "awk's Reserved Words"
|
||||
.B awk
|
||||
is the pattern-scanning language that does all of the work for the
|
||||
commands
|
||||
.BR row ,
|
||||
.BR compute ,
|
||||
and
|
||||
.BR validate .
|
||||
.PP
|
||||
.B awk
|
||||
recognizes the following words as having special significance.
|
||||
If you name a columns with any of these reserved words
|
||||
and then try to use them in a query, the
|
||||
.B /rdb
|
||||
commands that are built around
|
||||
.B awk
|
||||
turn them into column positions and
|
||||
.B awk
|
||||
does not see them.
|
||||
It is best to avoid these names as column heads or simply
|
||||
capitalize the first letter of each of your column names.
|
||||
.PP
|
||||
This list also indicates the many functions you have with
|
||||
.BR awk .
|
||||
However, do not rely on the following descriptions.
|
||||
The tutorial section of
|
||||
your COHERENT manual contains a summary of the
|
||||
.B awk
|
||||
language.
|
||||
.PP
|
||||
Please note that this list of
|
||||
.B awk
|
||||
functions and reserved words comes from UNIX System V.
|
||||
Other implementations of
|
||||
.B awk
|
||||
may not contain all of these functions.
|
||||
.DM
|
||||
.ta 1.5i
|
||||
\fIReserved Word Description\fR
|
||||
.tc .
|
||||
\fBBEGIN\fR Pattern that matches before first input record
|
||||
\fBEND\fR Pattern that matches after last input record
|
||||
\fBbreak\fR Exit the nearest \fBfor\fR or \fBwhile\fR loop
|
||||
\fBcontinue\fR Go to next iteration of \fBfor\fR or \fBwhile\fR loop
|
||||
\fBelse\fR Used in \fBif then else\fR expression
|
||||
\fBexit\fR Leave program entirely, as if at end of input
|
||||
\fBexp\fR Raise number to a power
|
||||
\fBfor\fR \fBfor (\fIexpression\fB ; \fIcondition\fB; \fIexpression\fB)\fR
|
||||
\fBgetline\fR Get next input line
|
||||
\fBif\fR \fBif (\fIcondition\fB) \fIstatement \fB[else \fIstatement\fB]\fR
|
||||
\fBin\fR \fBfor (\fIvariable \fBin \fIarray\fB) \fIstatement\fR
|
||||
\fBindex\fR \fBindex ( \fIstring1\fB, \fIstring2 \fB)\fR
|
||||
\fBint\fR Truncate argument to integer
|
||||
\fBlength\fR Return current line length, or length of argument
|
||||
\fBlog\fR Return log (to base 2) of argument
|
||||
\fBnext\fR Skip to next record and reexecute all commands
|
||||
\fBprint\fR Output variables
|
||||
\fBprintf\fR \fBprintf ("\fIformat\fB", \fIvariable\fB, ... )\fR
|
||||
\fBsplit\fR \fBsplit (\fIstring\fB, \fIarrayname\fB, \fIseparator\fB)\fR
|
||||
\fBsprintf\fR \fBsprintf ("\fIformat\fB", \fIvariable, ... \fB)\fR
|
||||
\fBsqrt\fR Return square root of argument
|
||||
\fBsubstr\fR \fBsubstr ( \fIstring\fB, \fIstart\fB, \fInumber \fB)\fR
|
||||
\fBwhile\fR \fBwhile ( \fIcondition\fB ) \fIstatement\fR
|
||||
.tc
|
||||
.DE
|
||||
.PP
|
||||
Although
|
||||
.B row
|
||||
is built around the
|
||||
.B awk
|
||||
language,
|
||||
.B row
|
||||
has the advantage of knowing about the names of the columns.
|
||||
Therefore, you can use column names instead
|
||||
of column positional numbers.
|
||||
To grasp the full power of
|
||||
.B row
|
||||
and
|
||||
.BR compute ,
|
||||
read the COHERENT manual's tutorial on
|
||||
.BR awk .
|
||||
.SH "See Also"
|
||||
.B
|
||||
compute,
|
||||
row,
|
||||
select,
|
||||
validate
|
||||
.R
|
||||
.br
|
||||
COHERENT Tutorials:
|
||||
.B
|
||||
Introduction to the awk Language
|
||||
.R
|
||||
Reference in New Issue
Block a user