我需要大写(无论字符串(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(如果可能的话,指出我做错了什么)
答案 0 :(得分:1)
这似乎可以做你想要的:
sed '/<b>/{s/[a-z]*\./\u&/}' input
在您的情况下,[a-z][^ ][^ ]\.
仅匹配3个字母或更多。您可以使用[^ ]
使其成为可选项,而不是强制存在*
,[a-z][^ ]*