Sed - Capitalize以点结尾的字符串的第一个字符

时间:2012-09-06 19:37:15

标签: sed

我需要大写(无论字符串(4,3,2或1)的大小)字符串以点结尾。但是,不以小圆点结尾的字符串应保持小写。

这3个命令能够做我需要的,但是1-char字符串以点结尾,2-char字符串以点结尾。

sed -i -e "/<b>/ {s/\.\([^ ]\)/. \1/g}" file
sed -i -e "/<b>/ {s/\( [a-z]\.\)/\U\1/g}" file
sed -i -e "/<b>/ {s/\([a-z][^ ]\.\)/\u&/g}" file

跟随我的流,我认为这样做(下面),会非常有意义,但它确实没有用,并使3-char字符串看起来像这样:YEs.和4- char字符串,如HAHa.

sed -i -e "/<b>/ {s/\([a-z][^ ][^ ]\.\)/\u&/g}" file

有人可以帮忙吗? :p(如果可能的话,指出我做错了什么)

1 个答案:

答案 0 :(得分:1)

这似乎可以做你想要的:

sed '/<b>/{s/[a-z]*\./\u&/}' input

在您的情况下,[a-z][^ ][^ ]\.仅匹配3个字母或更多。您可以使用[^ ]使其成为可选项,而不是强制存在*[a-z][^ ]*