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

Bash 用大写字母替换句子的第一个符号,bash,capitalization,capitalize,Bash,Capitalization,Capitalize,我需要帮助将输入文件input.txt中句子中第一个单词的第一个字母大写: 这是我的第一句话。这是第二句话。那个是第三个 我想在输出文件output.txt中使输出看起来像这样: 这是我的第一句话。这是第二句话。那个是第三个 试试这个: sed -r "s/(^|\.\s+)./\U&/g" <input.txt >output.txt sed-r“s/(^ | \.\s+)/\U&/g“output.txt 试试这个: sed -r "s/(^|\.\s+)./\U&am

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

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

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

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

试试这个:

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

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

那么
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.

$awk-F“\.”{OFS=“.”}{for(i=0;i那么
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.

$awk-F“\.”{OFS=“.”}{for(i=0;i
bash版本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
!/usr/local/bin/bash
而IFS=“”读取-r-a行;执行
对于((i=0;i 0]]),则
temp=$(echo${line[$i]/})
echo-n“${temp^}”
其他的
echo-n“${line[$i]^}”
fi
完成
回声
完成<文件

bash版本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
!/usr/local/bin/bash
而IFS=“”读取-r-a行;执行
对于((i=0;i 0]]),则
temp=$(echo${line[$i]/})
echo-n“${temp^}”
其他的
echo-n“${line[$i]^}”
fi
完成
回声
完成<文件

如果您先展示您尝试过的内容,我们可以帮助您。提示:可能涉及使用
perl
awk
。欢迎使用。请花些时间阅读。如果您先展示您尝试过的内容,我们可以帮助您。提示:可能涉及使用
perl
awk
。欢迎使用。请花点时间阅读o、 我发现它不适用于所有UTF8符号。这适用于斯洛伐克语系统和有时以ľťťžýáíéď等开头的句子。我想解决这个问题?如果您的语言环境设置正确,它应该会起作用(请参阅)我把我的语言环境改成了斯洛伐克的utf8,但它不起作用。它用一些robish字符替换了特殊字符。有什么想法吗?我用德语UTF-8语言环境检查了一下,效果很好。你是否调整了
LANG
LC.*
?你的终端支持UTF-8吗?你好,我发现它不支持所有utf8符号。这是对于斯洛伐克语系统和有时以ľťťžýýáíéď等开头的句子,我有解决这个问题的想法吗?如果您的语言环境设置正确,它应该会起作用(请参阅).我把我的语言环境改成了斯洛伐克utf8,但它不起作用。.它用一些粗体字符替换了特殊字符。有什么想法吗?我用德语UTF-8语言环境检查了一下,效果很好。你是否调整了
LANG
LC_*
?你的终端支持UTF-8吗?谢谢,它起作用了,但以ľ开头的句子不起作用ťťťýýýýýýď等。有什么想法吗?@Tommy
bash v4
处理它。如果没有,那么你的
locale
就不能处理这个问题。你可能至少需要将
LCýCTYPE
设置为一个
UTF-8
变体。谢谢你,但它对以ťťýýýýýýýý想法?@Tommy
bash v4
处理它。如果没有,则您的
locale
无法处理此问题。您可能至少需要将
LC\u CTYPE
设置为
UTF-8
变体。