我和一个朋友正在做一个项目,我们必须创建一个可以进入文件的脚本,并使用 Sed 将某个表达式/单词/字母的所有出现替换为另一个。它旨在通过多次测试来替换所有这些事件,我们不知道它们会是什么,所以我们必须预测任何事情。我们在某个测试中遇到了麻烦,我们需要使用循环将不同文件中的 'l*' 替换为 'L'。我拥有的代码是
#!/bin/sh
p1="$1"
shift
p2="$1"
shift
for file in "$@" #for any file in the directory
do
# A="$1"
#echo $A
#B="$2"
echo "$p1" | sed -e 's/\([*.[^$]\)/\\\1/g' > temporary #treat all special characters as plain text
A="`cat 'temporary'`"
rm temporary
echo "$p1"
echo "$file"
sed "s/$p1/$p2/g" "$file" > myFile.txt.updated #replace occurances
mv myFile.txt.updated "$file"
cat "$file"
done
我曾尝试在包含不同单词和“l*”的练习文件上对此进行测试,但每当我测试它时,它都会删除文件中的所有文本。有人可以帮我解决这个问题,我们希望尽快完成。谢谢