recsel
is an utility whose primary purpose is to select
records from a recfile and print them on standard output.
Consider the following example record set, which we shall assume is
saved in a recfile called acquaintances.rec:
# This database contains a list of both real and fictional people # along with their age. Name: Ada Lovelace Age: 36 Name: Peter the Great Age: 53 # Name: Matusalem # Age: 969 Name: Bart Simpson Age: 10 Name: Adrian Mole Age: 13.75
If we invoke recsel acquaintances.rec
we will get a list of
all the records stored in the file in the terminal:
$ recsel acquaintances.rec Name: Ada Lovelace Age: 36 Name: Peter the Great Age: 53 Name: Bart Simpson Age: 10 Name: Adrian Mole Age: 13.75
Note that the commented out parts of the file, in this case the
explanatory header and the record corresponding to Matusalem, are not
part of the output produced by recsel
. This is because
recsel
is concerned only with the data.
recsel
will also “pack” the records so any extra empty
lines that may be between records are not echoed in the output:
acquaintances.rec: Name: Peter the Great Age: 53 # Note the extra empty lines. Name: Bart Simpson Age: 10 | $ recsel acquaintances.rec Name: Peter the Great Age: 53 Name: Bart Simpson Age: 10 |
It is common to store data gathered in several recfiles. For example, we could have a contacts.rec file containing general contact records, and also a work-contacts.rec file containing business contacts:
contacts.rec: Name: Granny Phone: +12 23456677 Name: Doctor Phone: +12 58999222 | work-contacts.rec: Name: Yoyodyne Corp. Email: sales@yoyod.com Phone: +98 43434433 Name: Robert Harris Email: robert.harris@yoyod.com Note: Sales Department. |
Both files can be passed to recsel
in the command line. In
that case recsel
will simply process them and output their
records in the same order they were specified:
$ recsel contacts.rec work-contacts.rec Name: Granny Phone: +12 23456677 Name: Doctor Phone: +12 58999222 Name: Yoyodyne Corp. Email: sales@yoyod.com Phone: +98 43434433 Name: Robert Harris Email: robert.harris@yoyod.com Note: Sales Department.
As mentioned above, the output follows the ordering on the command
line, so recsel work-contacts.rec
contacts.rec
would output the records of work-contacts.rec first
and then the ones from contacts.rec.
Note however that recsel
will merge records from several
files specified in the command line only if they are anonymous. If
the contacts in our files were typed:
contacts.rec: %rec: Contact Name: Granny Phone: +12 23456677 Name: Doctor Phone: +12 58999222 | work-contacts.rec: %rec: Contact Name: Yoyodyne Corp. Email: sales@yoyod.com Phone: +98 43434433 Name: Robert Harris Email: robert.harris@yoyod.com Note: Sales Department. |
Then we would get the following error message:
$ recsel contacts.rec work-contacts.rec recsel: error: duplicated record set 'Contact' from work-contacts.rec.