Note to self: sed's (Stream EDitor) command
y/list1/list2/ to transform / transliterate each character is based on its position in list1 to a character in the same position in list2. list1 and list2 must be an explicit character list, not a regular expression (and hence, not a character class). In other words, if you enter
y/[a-z]/[A-Z]/, sed will look for these characters in the input, '[', 'a', '-', 'z' and ']', to replace with '[', 'A', '-', 'Z' and ']' respectively; sed does not expand a character class [a-z] to replace with [A-Z]. Same with Posix character class names such as [:lower:] and [:upper:].
I incorrectly mixed up the idea that sed's transform command with the tr (translate) command, which supports interpreted sequences, e.g.
tr [:lower:] [:upper:] will transform all lower case characters to upper case.