我想用 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
sed -i.bak "s/existing_string/$new_string/g" ./temp.txt
sed -i.bak "s/$existing_string/new_string/g" ./temp.txt
这里$
是用于你的变量,在使用变量时sed
记得使用" "
其中的变量。
该选项-i.bak
将创建原始文件的备份文件。