Skip to content

frommultire

Match multiple regexes against each line of input (or lines of <files>).

Synopsis

bash
recs frommultire [options] [<files>]

Description

Match multiple regexes against each line of input (or lines of &lt;files&gt;). Various parameters control when the accumulated fields are flushed to output as a record and which, if any, fields are cleared when the record is flushed. By default regexes do not necessarily flush on either side, would-be field collisions cause a flush, EOF causes a flush if any fields are set, and all fields are cleared on a flush. Regex syntax is: '&lt;KEY1&gt;,&lt;KEY2&gt;=REGEX'. KEY field names are optional. If a field matches $NUM, then that match number in the regex will be used as the field name.

Options

FlagDescription
--no-flush-regex / --regex / --re <regex>Add a normal regex (no flushing).
--pre-flush-regex / --pre <regex>Add a regex that flushes before interpreting fields when matched.
--post-flush-regex / --post <regex>Add a regex that flushes after interpreting fields when matched.
--double-flush-regex / --double <regex>Add a regex that flushes both before and after interpreting fields when matched.
--clobberDo not flush records when a field from a match would clobber an already existing field and do not flush at EOF.
--keep-allDo not clear any fields on a flush.
--keep <fields>Do not clear this comma separated list of fields on a flush.

Examples

Parse several fields on separate lines

bash
recs frommultire --re 'fname,lname=^Name: (.*) (.*)$' --re 'addr=^Address: (.*)$'

Some fields apply to multiple records (department here)

bash
recs frommultire --post 'fname,lname=^Name: (.*) (.*)$' --re 'department=^Department: (.*)$' --clobber --keep team

See Also

Released under the MIT License.