String 如何在bash中用另一个字母替换一个字母?

String 如何在bash中用另一个字母替换一个字母?,string,bash,replace,String,Bash,Replace,我是一名新的bash学习者。我想知道,如何在bash中用另一个字母替换一个字母。 任务是:我必须从标准输入中获取一些字符串。然后我必须处理每个字符串。对于一个字符串,我必须将第一次出现的大写字母替换为 假设输入如下所示: Namibia Nauru Nepal Netherlands NewZealand Nicaragua nIgEr Nigeria NorthKorea Norway 输出应如下所示: .amibia .auru .epal .etherlands .ewZealand .

我是一名新的
bash
学习者。我想知道,如何在
bash
中用另一个字母替换一个字母。 任务是:我必须从标准输入中获取一些字符串。然后我必须处理每个字符串。对于一个字符串,我必须将第一次出现的大写字母替换为

假设输入如下所示:

Namibia
Nauru
Nepal
Netherlands
NewZealand
Nicaragua
nIgEr
Nigeria
NorthKorea
Norway
输出应如下所示:

.amibia .auru .epal .etherlands .ewZealand .icaragua n.ger .igeria .orthKorea .orway
就我所能做的而言:

countries=()
while read -r country; do
    # here I have to do something to detect the first occurrence of capital letter and then replace it with a dot(.)
    countries+=( "$country" )
done
echo "${countries[@]}"
请帮忙。

更换

countries+=( "$country" )


你可能会找到灵感。如果输入中出现
,为什么它不起作用?请看,您遇到了一个有时会影响Unix管道的恼人的怪癖。stdin文本没有以最后一行结尾的行。这是ideone.com网站处理您输入到stdin文本区域的文本的方式的产物。他们本可以设计网站,以确保最终输入行有一个连接到它的行结束,但他们没有。这会导致
read
不处理最后一行,因为
read
bash内置程序在得到行结尾之前从不处理行。这可以通过自己添加来修复;请参阅。要明确,该问题与输入中的
无关;请注意,第三行也有一个点,并且处理正确。这个问题是由于没有一个最后一行结束,正如我上面所描述的。
countries+=( "${country/[[:upper:]]/.}" )