用大写字母替换句子的第一个符号

时间:2013-05-25 18:34:20

标签: bash capitalization capitalize

我需要帮助将输入文件input.txt中句子中第一个单词的第一个字母大写:

  

t 他是我的第一句话。 a 这是第二句话。 t 帽子是第三个。

我想在输出文件output.txt中使输出看起来像这样:

  

T 他是我的第一句话。 A 这是第二句话。 T 帽子是第三个。

3 个答案:

答案 0 :(得分:3)

试试这个:

sed -r "s/(^|\.\s+)./\U&/g" <input.txt >output.txt

答案 1 :(得分:1)

bash version 4方式:

#!/usr/local/bin/bash

while IFS="." read -r -a line ; do
    for ((i=0; i<${#line[@]}; i++)) do
        if [[ $i > 0 ]]; then
            temp=$(echo ${line[$i]/ /})
            echo -n "${temp^}. "
        else
            echo -n "${line[$i]^}. "
        fi
    done
    echo
done < file

答案 2 :(得分:0)

awk方式呢?

$ awk -F"\. " '{OFS=". "}{for (i=0;i<=NF;i++) {sub(".", substr(toupper($i), 1,1) , $i)}} {print}' output.txt 
This is my first sentence. And this is the second sentence. That one is the third.
  • -F"\. "将字段分隔符设置为.(点+空格)。
  • {OFS=". "}将输出字段分隔符设置为.(点+空格)。
  • '{for (i=0;i<=NF;i++) {sub(".", substr(toupper($i), 1,1) , $i)}}循环遍历每个字段,将其首字母大写。由于第一个字段为this is my first sentence,因此它只是大写this