3.1 Simple Selections

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.