在sed命令中使用变量

时间:2018-04-17 10:38:25

标签: bash shell sed

我有以下命令在第1行之后将字符串变量插入文件:

serviceWorker

我在变量周围使用了双引号,因为其他类似帖子中的答案已经说过了(所以不要标记为重复的pls),但它仍然不起作用,只是插入字符串{ {1}}

文件sed '1a\"$str_builder"' certs.json > certs-new.json 看起来像:

$str_builder

certs.json看起来像:

[
    {
        "url" : "www.google.com",
    .
    .

3 个答案:

答案 0 :(得分:1)

在整个事物周围使用双引号并删除反斜杠。

sed "1a$str_builder" certs.json > certs-new.json

答案 1 :(得分:0)

单引号禁止变量扩展。你需要使用双引号。

sed "1a$str_builder" certs.json > certs-new.json

如果你想在外部引号内加双引号,则需要对内部引号进行转义。

sed "1a\"$str_builder\"" certs.json > certs-new.json

但是,使用jq修改JSON数据可能会更好。它是专为JSON操作而设计的更智能的工具。

答案 2 :(得分:0)

我在我的系统中通过以下两个答案尝试了sed命令并得到了错误sed: command garbled:因此暂时没有sed命令就给出了下面的解决方案。将使用sed检查一次如何解决问题。

 #first print the first line of file certs.json
 head -1 certs.json > certs-new.json
 #Now insert value of variable str_builder into certs-new.json as second line
 echo "$str_builder" >> certs-new.json

 #now insert all the lines except first line from certs.json to certs-new.json
 tail +2 certs.json >> certs-new.json