【问题标题】:Using sed or tr to capitalize the last letter of words that begin with a specified character/expression使用 sed 或 tr 大写以指定字符/表达式开头的单词的最后一个字母
【发布时间】:2017-02-19 14:16:04
【问题描述】:

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

示例:At The MoviesAT ThE Movies

我试过了……

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

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

也试过了:

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

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

【问题讨论】:

  • tr 不是要使用的命令;它无条件地映射它被告知要映射的所有字符。
  • 感谢您的建议 :)

标签: regex sed tr


【解决方案1】:

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

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

【讨论】:

  • 谢谢,错过这么简单的事情,我现在觉得很傻。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-23
  • 1970-01-01
  • 2022-01-22
  • 2023-03-15
  • 1970-01-01
相关资源
最近更新 更多