2012-09-06 190 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

相關問題