替换一行中的字符串,该行由变量输入

替换一行中的字符串,该行由变量输入

我想用 sed 替换文档行中的字符串。哪里的电话号码值应该来自变量,$var

我试过了:

sed '%ds/peer/md5/g' $var ./temp.txt

但它给出了

sed: -e expression #1, char 1: unknown command: `%'

还尝试过:

sed -e '"$var"s/peer/md5/g'-i ./temp.txt
sed: -e expression #1, char 1: unknown command: `"'

最后尝试:

printf '%ds/peer/md5/g;\n' 80 | sed -f - ./temp.txt

它打印正确,但我无法使用输出重定向 (>) 或 -i 命令保存结果文件。

答案1

我意识到正确的方法是:

sed "$var"'s/string1/string2/' -i ./temp.txt

在哪里变量是具有文件行号的变量。

答案2

  1. sed -i.bak "s/existing_string/$new_string/g" ./temp.txt
  2. sed -i.bak "s/$existing_string/new_string/g" ./temp.txt

这里$是用于你的变量,在使用变量时sed记得使用" "其中的变量。

该选项-i.bak将创建原始文件的备份文件。

相关内容