0

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

这是我的第一句话。这是第二句话。一个就是第三个。

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

是我的第一句话。这是第二句话一个是第三个。

4

3 回答 3

3

尝试这个:

sed -r "s/(^|\.\s+)./\U&/g" <input.txt >output.txt
于 2013-05-25T18:59:07.803 回答
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
于 2013-05-25T21:28:21.870 回答
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
于 2013-05-25T19:25:40.100 回答