2012-09-06 143 views
1

我需要大写(不管字符串的大小(4,3,2或1))以字符串结尾。但是,不能以点阵结束的字符串应保存为小写字母。Sed - 大写以字符串结尾的字符串的第一个字符

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

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个字元的字符串是这样的:YEs.和4-字符串像HAHa.

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

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

回答

1

这似乎做你想要什么:

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

在你的情况,[a-z][^ ][^ ]\.只匹配3个字以上。而不是强迫[^ ]的存在,你可以使用*使它们可选:[a-z][^ ]*

+1

耻辱对我来说,我怎么可以不认为在这!谢谢@perreal – ghaschel

相关问题