我在一个shell脚本上工作,该脚本从用户那里获取通配符,并在当前工作目录下的.txt文件中搜索匹配的单词(例如,通配符ar *查找文章等)。当找到单词时,应将它们从小写转换为大写(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
它会完美地打印所有单词,但不会将它们转换为文件中的大写字母,并给出错误as;
您/在s/old/new/语句中缺少第二个。您还应该使用g修饰符替换一行上的所有匹配项。
sed -i "s/${word}/${word^^}/g" $file
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。