/retools

EPICS Regular Expression tools for IOCs

Primary LanguageC++MIT LicenseMIT

retools

retools is an EPICS module that contains a few useful EPICS shell commands that use regular expressions. Uses C++11's regexp.

reGrep "pattern"

Prints record names that match the regular expression in pattern. Example:

epics> dbl
ABC:X
ABC:Y
ABC:Z

epics> reGrep "X"
ABC:X

epics> reGrep "[X|Y]"
ABC:X
ABC:Y

reTest "pattern" "value"

Tests a substitution of pattern with value, useful for testing before running reAddAlias or reAddInfo. Example:

epics> dbl
ABC:X
ABC:Y
ABC:Z

epics> reTest "AB(.*):.*$" "$1"
ABC:X C

reAddAlias "pattern" "alias"

Adds an alias to all records that match the regular expression in pattern. Example:

epics> dbl
ABC:X
ABC:Y
ABC:Z

epics> reAddAlias "ABC:(.*)" "DEF:$1"
Alias ABC:X -> DEF:X created
Alias ABC:Y -> DEF:Y created
Alias ABC:Z -> DEF:Z created

epics> dbla
DEF:X -> ABC:X
DEF:Y -> ABC:Y
DEF:Z -> ABC:Z

reAddInfo "pattern" "name" "value"

Adds an info tag to all records that match the regular expression in pattern. Matching groups can be used for value. Example:

epics> dbl
ABC:X
ABC:Y
ABC:Z

epics> reAddInfo "(.*):.*" "prefix" "$1"
ABC:X: added info(prefix, 'ABC')
ABC:Y: added info(prefix, 'ABC')
ABC:Z: added info(prefix, 'ABC')

epics> dbDumpRecord
record(ai,"ABC:X") {
    field(DTYP,"Soft Channel")
    info("prefix","ABC")
}
record(ai,"ABC:Y") {
    field(DTYP,"Soft Channel")
    info("prefix","ABC")
}
record(ai,"ABC:Z") {
    field(DTYP,"Soft Channel")
    info("prefix","ABC")
}

rePutField "pattern" "field" "value"

Sets the value of a particular field to all records that match the regular expression in pattern. Can be used for the VAL field. Example:

epics> dbl
ABC:X
ABC:Y
ABC:Z

epics> rePutField "(.*):.*" "EGU" "units"
ABC:X: put field(EGU, 'units')
ABC:Y: put field(EGU, 'units')
ABC:Z: put field(EGU, 'units')

epics> dbDumpRecord
record(ai,"ABC:X") {
    field(DTYP,"Soft Channel")
    field(EGU,"units")
}
record(ai,"ABC:Y") {
    field(DTYP,"Soft Channel")
    field(EGU,"units")
}
record(ai,"ABC:Z") {
    field(DTYP,"Soft Channel")
    field(EGU,"units")
}

Disabling verbose output

By default, retools has verbose output. To disable it, set the variable reToolsVerbose to 0:

epics> var reToolsVerbose 0
epics>