Rdb: Ruby-Nachbau der MWC /rdb-Werkzeuge
This commit is contained in:
@@ -0,0 +1,146 @@
|
||||
.TH validate "" "" "/rdb Command"
|
||||
.PC "Find invalid data"
|
||||
\fBvalidate '\fIpattern \fB{ \fIaction \fB} ...' < \fItableorlist\fR
|
||||
.PP
|
||||
.II "table^validate"
|
||||
.II "data^validate"
|
||||
The command
|
||||
.B validate
|
||||
checks your tables and a list of invalid data.
|
||||
It also prints messages of your choosing, and shows
|
||||
you the line that caused the error.
|
||||
It is almost identical to a combination of the commands
|
||||
.B row
|
||||
and
|
||||
.BR compute .
|
||||
.PP
|
||||
.B validate
|
||||
passes your commands to
|
||||
.B awk
|
||||
after it has converted your column names to
|
||||
.BR $1 ,
|
||||
.BR $2 ,
|
||||
and so on, which is how
|
||||
.B awk
|
||||
refers to columns.
|
||||
.PP
|
||||
.I pattern
|
||||
is a logical condition that indicates invalidity in the data;
|
||||
for example, it may give values that are negative and should not be,
|
||||
or greater than they should be.
|
||||
.I action
|
||||
is what to do about it;
|
||||
usually, this is to print a message.
|
||||
.SH Example
|
||||
The first example is simple.
|
||||
Once again, consider table
|
||||
.BR inventory ,
|
||||
which is as follows:
|
||||
.DM
|
||||
Item# Onhand Cost Value Description
|
||||
----- ------ ---- ----- --------------
|
||||
1 3 50 150 rubber gloves
|
||||
2 100 X 500 test tubes
|
||||
3 -5 80 -400 clamps
|
||||
4 23 19 437 plates
|
||||
5 -99 24 -2376 cleaning cloth
|
||||
6 89 147 13083 bunsen burners
|
||||
7 5 175 875 scales
|
||||
.DE
|
||||
.PP
|
||||
Several invalid values have crept into this table.
|
||||
You might wish to check that no item in column
|
||||
.B Onhand
|
||||
is less than zero.
|
||||
To do so, type the command:
|
||||
.DM
|
||||
validate 'Onhand < 0 {print "negative Onhand in line " NR}' < badinventory
|
||||
.DE
|
||||
.PP
|
||||
This prints the following on the standard output:
|
||||
.DM
|
||||
Item# Onhand Cost Value Description
|
||||
----- ------ ---- ----- --------------
|
||||
1 3 50 150 rubber gloves
|
||||
2 100 X 500 test tubes
|
||||
negative Onhand in line 3
|
||||
3 -5 80 -400 clamps
|
||||
4 23 19 437 plates
|
||||
negative Onhand in line 5
|
||||
5 -99 24 -2376 cleaning cloth
|
||||
6 89 147 13083 bunsen burners
|
||||
7 5 175 875 scales
|
||||
.DE
|
||||
.PP
|
||||
The variable
|
||||
.B NR
|
||||
means number of record or row.
|
||||
This variable is built into
|
||||
.BR awk ,
|
||||
which
|
||||
replaces it with the number of the line it is processing.
|
||||
.PP
|
||||
The next example is complex.
|
||||
Note that if you wish, you can write a command line for
|
||||
.B validate
|
||||
into a file, to create a customized validation command.
|
||||
You can put many tests and messages in one validation file.
|
||||
For example, the following command file, called
|
||||
.BR validateinv ,
|
||||
thoroughly checks table inventory:
|
||||
.DM
|
||||
echo validating badinventory
|
||||
.sp \n(pDu
|
||||
validate '{if (Onhand < 0 ) print "negative Onhand in line " NR; \e
|
||||
if (Value < 0 ) print "negative Value in line " NR; \e
|
||||
if (Cost ~ /[A-Za-z]/) print "letter in Cost in line " NR; }' \e
|
||||
< badinventory
|
||||
.DE
|
||||
.PP
|
||||
To validate table
|
||||
.BR inventory ,
|
||||
just type:
|
||||
.DM
|
||||
validating badinventory
|
||||
.DE
|
||||
.PP
|
||||
This prints the following on the standard output:
|
||||
.DM
|
||||
Item# Onhand Cost Value Description
|
||||
----- ------ ---- ----- --------------
|
||||
1 3 50 150 rubber gloves
|
||||
letter in Cost in line 2
|
||||
2 100 X 500 test tubes
|
||||
negative Onhand in line 3
|
||||
negative Value in line 3
|
||||
3 -5 80 -400 clamps
|
||||
4 23 19 437 plates
|
||||
negative Onhand in line 5
|
||||
negative Value in line 5
|
||||
5 -99 24 -2376 cleaning cloth
|
||||
6 89 147 13083 bunsen burners
|
||||
7 5 175 875 scales
|
||||
.DE
|
||||
.PP
|
||||
You may wish to redirect the output of
|
||||
.B validate
|
||||
to a file, bring it into your editor, and
|
||||
correct the errors and remove the error lines as you go.
|
||||
To make it easier to find those error lines in
|
||||
the editor, you could have all error lines contain a string
|
||||
that is easy to find, such as
|
||||
.BR ERROR .
|
||||
.PP
|
||||
If you only want to see the error lines, use the command
|
||||
.BR row .
|
||||
.SH "See Also"
|
||||
.SH "Logical Conditions"
|
||||
.B
|
||||
compute,
|
||||
row
|
||||
.R
|
||||
.br
|
||||
COHERENT Tutorials:
|
||||
.B
|
||||
Introduction to the awk Language
|
||||
.R
|
||||
Reference in New Issue
Block a user