【问题标题】:How to replace a string in a file in KSH如何在 KSH 中替换文件中的字符串
【发布时间】:2016-05-26 17:05:55
【问题描述】:

我的 KSH 脚本应该替换同一目录中 txt 文件中的字符串。

sed -i 's/"$original"/"$reversed"/' inputtext.txt

是我目前正在使用的,但它不起作用。代码中没有错误或类似的东西。它只是不起作用。

这是我的全部代码:

#!/bin/ksh
original=$1
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”。

我做错了什么?

【问题讨论】:

标签: awk sed ksh


【解决方案1】:

我认为单引号可以防止变量扩展。你可以试试这个:

sed -i "s/$original/$reversed/" inputtext.txt

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    相关资源
    最近更新 更多