我在一个 shell 脚本上工作,它从用户那里获取通配符并在当前工作目录下的 .txt 文件中搜索匹配的词(例如;通配符 ar* 查找文章、are 等)。当它找到单词时,它应该将它们从小写转换为大写(ARTICLE、ARE...)。
我生成了一个 while 循环来检查 .txt 文件中的所有单词,并生成了一个 for 循环来检查所有 .txt 文件。 while 循环逐字读取 .txt 文件。但是,它会找到所有与通配符完美匹配的单词;我无法将它们转换为大写。
....
while IFS= read -r word; do
if [[ ${word,,} == ${string,,} ]]
then
echo $word #to check the words
sed -i "s/${word}/${word^^}" $file
fi
done
它完美地打印了所有单词,但没有将它们转换为文件中的大写字母,并给出了一个错误;
"sed: -e expression #1, char 15: unterminated `s' command"
最佳答案
您缺少 s/old/new/
语句中的第二个 /
。您还应该使用 g
修饰符来替换一行中的所有匹配项。
sed -i "s/${word}/${word^^}/g" $file
关于linux - 在文件中搜索单词并将其从小写转换为大写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58612506/