我需要帮助将输入文件input.txt
中句子中第一个单词的第一个字母大写:
t 他是我的第一句话。 a 这是第二句话。 t 帽子是第三个。
我想在输出文件output.txt
中使输出看起来像这样:
T 他是我的第一句话。 A 这是第二句话。 T 帽子是第三个。
答案 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
。