linux sed 使用 我有个1.sh文件内容如下 sed -i 's/$1/$2/g' 1.txt

其中$1 $2 就是 ./1.txt one first 后面的参数 one 和first
就是将1.txt中 的one 替换为first
但是我的写法肯定替换不了,请问sed 如何替换传递的参数值
最新回答
槐序廿柒

2024-07-02 00:53:41

两种方法,

一,单引号改为双引号
sed -i "s/$1/$2/g" 1.txt

二,把shell变量$1和$2拿到单引号外面来
sed -i 's/'$1'/'$2'/g' 1.txt

原因其实就是单引号会消除$取值符号的特殊含义,$只会被解析为字符本身。
一枕庭前雪

2024-07-02 02:54:41

sed -i 's/'$1'/'$2'/g' 1.txt
用单引号把shell变量扩起来