# Generate mnemonics for alarms based on alarm item name /mnemonic/ { next } { print } /^Motor/ || /^Gf/ || /^Event/ || /^Micro/ || /^Boolean/ { name = $2 mnem = "" substring = name while (ind = match(substring, "[\\._]")) { substring = substr(substring, ind + 1) if (substring == "ALARM") # Don't include trailing "_ALARM" substring break; if (substring == "EVENT") # Don't include trailing "_EVENT" substring break; if (substring == "STATUS") # Don't include trailing "_STATUS" substring break; # printf "substring: %s\n", substring # Preserve case of first character of substring mnem = mnem substr(substring, 1, 1) if (ind = match(substring, "[\\._]")) len = ind - 1 else len = length(substring) suffix = substr(substring, 2, len - 1) suffix = lowercase(suffix) # printf "suffix=%s\n", suffix mnem = mnem suffix } printf " mnemonic = %s\n", mnem } function lowercase(str) { first_cap = 65 last_cap = 90 lc_offset = 32 for (uc = first_cap; uc < last_cap; uc++) { ucase = sprintf("%c", uc) lcase = sprintf("%c", uc + lc_offset) gsub(ucase, lcase, str) } return str } a