%rec special field is used for two main purposes: to
identify a record as a record descriptor, and to provide a name for
the described record set. The synopsis of the usage of the field is
%rec: type [url_or_file]
type is the name of the kind of records described by the
descriptor. It is mandatory to specify it, and it follows the same
lexical conventions used by field names. See Fields and Records.
There is a non-enforced convention to use singular nouns, because the
name makes reference to the type of a single entity, even if it
applies to all the records contained in the record set. For example,
the following record set contains transactions, and the type specified
in the record descriptor is
%rec: Transaction Id: 10 Title: House rent Id: 11 Title: Loan
%rec field shall appear in a record descriptor. If
there are more it is considered an integrity violation. It is highly
recommended (but not enforced) to place this field in the first
position of the record descriptor.
Sometimes it is convenient to store records of the same type in different files. The duplication of record descriptors in this case would surely lead to consistency problems. A possible solution would be to keep the record descriptor in a separated file and then include it in any operation by using pipes. For example:
$ cat descriptor.rec data.rec | recsel ...
For those cases it is more convenient to use a external
descriptor. External descriptors can be built appending a file path
%rec field value, like:
%rec: FSD_Entry /path/to/file.rec
The previous example indicates that a record descriptor describing the
FSD_Entry records shall be read from the file
/path/to/file.rec. A record descriptor for
may not exist in the external file. Both relative and absolute paths
can be specified there.
URLs can be used as sources for external descriptors as well. In that case we talk about remote descriptors. For example:
%rec: Department http://www.myorg.com/Org.rec
The URL shall point to a text file containing rec data. If there is a
record descriptor in the remote file documenting the
type, it will be used.
Note that the local record descriptor can provide additional fields to “expand” the record type. For example:
%rec: FSD_Entry http://www.jemarch.net/downloads/FSD.rec %mandatory: Rating
The record descriptor above is including the contents of the
FSD_Entry record descriptor from the URL, and adding them to
the local record descriptor, that in this case contains just the
If you are using the GNU recutils to process your recfiles, any URL
schema supported by
libcurl will work.