使用sed或tr来大写以指定字符/表达式开头的单词的最后一个字母

时间:2016-10-11 04:21:20

标签: regex sed tr

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

示例:At The MoviesAT ThE Movies

我试过......

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

但这取代了我试图用他们的最后一个字母的大写字母改变的所有单词

也尝试过:

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

但后退不能与sed y合作所以我只是全部上限。

1 个答案:

答案 0 :(得分:2)

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

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