如何在 KSH 中替换文件中的字符串
How to replace a string in a file in KSH
我的 KSH 脚本应该替换同一目录中 txt 文件中的字符串。
sed -i 's/"$original"/"$reversed"/' inputtext.txt
是我目前正在使用的,但它不起作用。代码或类似的东西没有错误。就是不行。
这是我的全部代码:
#!/bin/ksh
original=
reversed=""
counter=0
echo $original | awk -v ORS="" '{ gsub(/./,"&\n") ; print }' | \
while read char
do
letters[$counter]+="$char"
((counter=counter+1))
done
length=${#original}
((length=length-1))
echo $original | awk -v ORS="" '{ gsub(/./,"&\n") ; print }' | \
while read char
do
reversed+=${letters[$length]}
((length=length-1))
done
echo $reversed
sed -i 's/"$original"/"$reversed"/' inputtext.txt
exit 0
我想,在文件 "inputtext.txt"(与 .sh 文件相同的目录)中,每个等于“$original”的词都被更改为“$reversed”。
我做错了什么?
我认为单引号可以防止变量扩展。你可以试试这个:
sed -i "s/$original/$reversed/" inputtext.txt
我的 KSH 脚本应该替换同一目录中 txt 文件中的字符串。
sed -i 's/"$original"/"$reversed"/' inputtext.txt
是我目前正在使用的,但它不起作用。代码或类似的东西没有错误。就是不行。
这是我的全部代码:
#!/bin/ksh
original=
reversed=""
counter=0
echo $original | awk -v ORS="" '{ gsub(/./,"&\n") ; print }' | \
while read char
do
letters[$counter]+="$char"
((counter=counter+1))
done
length=${#original}
((length=length-1))
echo $original | awk -v ORS="" '{ gsub(/./,"&\n") ; print }' | \
while read char
do
reversed+=${letters[$length]}
((length=length-1))
done
echo $reversed
sed -i 's/"$original"/"$reversed"/' inputtext.txt
exit 0
我想,在文件 "inputtext.txt"(与 .sh 文件相同的目录)中,每个等于“$original”的词都被更改为“$reversed”。
我做错了什么?
我认为单引号可以防止变量扩展。你可以试试这个:
sed -i "s/$original/$reversed/" inputtext.txt