使用 sed 或 tr 将以指定 character/expression 开头的单词的最后一个字母大写

Using sed or tr to capitalize the last letter of words that begin with a specified character/expression

我想将以某些字母开头的单词的最后一个字母大写。

示例:At The MoviesAT ThE Movies

我试过了...

$ sed 's/\<[ABEXY][[:alpha:]]*\([[:alpha:]]\>\)/\U/g' file1

但这会将我要更改的所有单词替换为最后一个字母的大写

也尝试过:

$ sed '/\<[ABEXY][[:alpha:]]*\([[:alpha:]]\>\)/ y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' file1

但是回拨不适用于 sed y 所以我只是全部大写。

也捕获单词的开头,并将其包含在替换中:

sed 's/\<\([ABEXY][[:alpha:]]*\)\([[:alpha:]]\>\)/\U/g' file1