Rdb: Ruby-Nachbau der MWC /rdb-Werkzeuge
This commit is contained in:
+154
@@ -0,0 +1,154 @@
|
||||
.TH replace "" "" "/rdb Command"
|
||||
.PC "Insert a record into a file at specified location"
|
||||
\fBreplace [\-a] [\-m[bhirs] \fItableorlist from to \fB[\fIxfrom xto\fB] < \fIintableorlist\fR
|
||||
.PP
|
||||
.II row^replace
|
||||
The command
|
||||
.B replace
|
||||
replaces the row at offsets
|
||||
.I from
|
||||
through
|
||||
.I to
|
||||
in
|
||||
.I tableorlist
|
||||
with the contents of
|
||||
.IR intableorlist .
|
||||
.B replace
|
||||
will not insert a record larger than
|
||||
.I to
|
||||
minus
|
||||
.IR from .
|
||||
It adds spaces to the
|
||||
.I last
|
||||
column of records within
|
||||
.I tableorlist
|
||||
that are smaller than the input record.
|
||||
.PP
|
||||
.I xfrom
|
||||
and
|
||||
.I xto
|
||||
give the beginning and end of the offsets of the index entry within
|
||||
.IR tableorlist 's
|
||||
associated fast-access table, should there be one.
|
||||
.PP
|
||||
To obtain painlessly the offsets of the record and its index entry, use
|
||||
the command
|
||||
.BR seek .
|
||||
This is demonstrated in the following example.
|
||||
.PP
|
||||
The command
|
||||
.B update
|
||||
remembers the location and size of the record it takes out of a file
|
||||
and passes it to
|
||||
.B replace
|
||||
so that only a correctly sized file goes back into that file.
|
||||
.SH Options
|
||||
.B replace
|
||||
recognizes the following options:
|
||||
.IP \fB\-a\fR
|
||||
Do not append the record in
|
||||
.I intableorlist
|
||||
to the end of
|
||||
.IR tableorlist .
|
||||
The default to append if the record is too big
|
||||
to fit back into the location from which it was taken.
|
||||
This option allows you to prevent appending.
|
||||
If you want a binary file to stay
|
||||
sorted, you will either have to resort it or not allow appending.
|
||||
.IP \fB\-m[bhirs]\fR
|
||||
Fast access methods.
|
||||
See the manual page for
|
||||
.B index
|
||||
for a description of what each of these options means.
|
||||
.SH Example
|
||||
If table
|
||||
.B recordtable
|
||||
contains one record, you use can insert that record into table
|
||||
.B bigfile
|
||||
with the following command:
|
||||
.DM
|
||||
replace bigfile 1421 1487 0 8 < recordtable
|
||||
.DE
|
||||
.PP
|
||||
Note that the contents of
|
||||
.B recordtable
|
||||
replace rows 1421 through 1487 within
|
||||
.BR bigfile .
|
||||
.PP
|
||||
For the second example, consider again table
|
||||
.BR inventory ,
|
||||
as follows:
|
||||
.DM
|
||||
Item Amount Cost Value Description
|
||||
---- ------ ---- ----- --------------
|
||||
1 3 50 150 rubber gloves
|
||||
2 100 5 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
|
||||
First, let's use the command
|
||||
.B seek
|
||||
to extract a record, and save its offset in the shell variable
|
||||
.BR LOCATION :
|
||||
.DM
|
||||
LOCATION=`echo 5 | seek -mr -o tmpfile inventory Item`
|
||||
.DE
|
||||
.PP
|
||||
.B $LOCATION
|
||||
is initialized to the following
|
||||
.DM
|
||||
207 245 54 62
|
||||
.DE
|
||||
.PP
|
||||
and
|
||||
.B tmpfile
|
||||
contains the following:
|
||||
.DM
|
||||
Item Amount Cost Value Description
|
||||
---- ------ ---- ----- --------------
|
||||
5 99 24 2376 cleaning cloth
|
||||
.DE
|
||||
.PP
|
||||
Here we use the record fast-access method.
|
||||
.PP
|
||||
Now let's
|
||||
change 99 to 199 within
|
||||
.BR tmpfile ,
|
||||
so we can see a change:
|
||||
.DM
|
||||
Item Amount Cost Value Description
|
||||
---- ------ ---- ----- --------------
|
||||
5 199 24 2376 cleaning cloth
|
||||
.DE
|
||||
.PP
|
||||
Now we can replace the edited record in
|
||||
.BR inventory :
|
||||
.DM
|
||||
replace -mr inventory $LOCATION < tmpfile
|
||||
.DE
|
||||
.PP
|
||||
.B inventory
|
||||
now appears as follows:
|
||||
.DM
|
||||
Item Amount Cost Value Description
|
||||
---- ------ ---- ----- --------------
|
||||
1 3 50 150 rubber gloves
|
||||
2 100 5 500 test tubes
|
||||
3 5 80 400 clamps
|
||||
4 23 19 437 plates
|
||||
5 199 24 2376 cleaning cloth
|
||||
6 89 147 13083 bunsen burners
|
||||
7 5 175 875 scales
|
||||
.DE
|
||||
.PP
|
||||
You can see that row 5 has been updated, because it now has
|
||||
199 in it.
|
||||
.SH "See Also"
|
||||
.B
|
||||
seek,
|
||||
update
|
||||
.R
|
||||
Reference in New Issue
Block a user