如何将参数传递给sed命令

时间:2017-03-10 18:55:16

标签: json sed

我正在尝试创建一个在sed命令中使用参数的函数。

replace_json_str() {
    x=$1
    sed -i -e 's/\("$2":"\)[^"]*\("\)/\$3\2/g' $x
}

原json:{ "USER":"root" }

用法:replace_json_str test.json USER pi

预期json:{ "USER":"pi" }

1 个答案:

答案 0 :(得分:0)

shell不会用单引号扩展变量。试试这个:

replace_json_str() {
  x=$1
  sed -i -e 's/\({ "'"$2"'":\)"[^"]*" }/\1"'"$3"'" }/g' $x
}