我有一个包含以下内容的文件
(ABC)我使用以下命令创建env变量
setenv ABC {"a":{"b":"http://c","d":"http://e"}}然后运行sed命令。
sed 's|(ABC)|('"$ABC"')|' myFile它将返回以下内容
a:b:http://c a:d:http://e它真的会把这个还回去
{"a":{"b":"http://c","d":"http://e"}对我错过了什么有什么想法吗
发布于 2017-07-26 15:36:31
从大括号和双引号是C shell中的元字符开始,您必须用反斜杠转义它们,如下所示:
setenv ABC \{\"a\":\{\"b\":\"http://c\",\"d\":\"http://e\"\}\}或者,更好的是,用单引号包装完整的值。
setenv ABC '{"a":{"b":"http://c","d":"http://e"}}'不管怎样,你都会得到:
$ echo "$ABC"
{"a":{"b":"http://c","d":"http://e"}}相反,如果您不像在问题中那样转义或引用语句中的值,您将得到:
$ echo "$ABC"
a:b:http://c a:d:http://e这就是你得到的(sed与问题无关)。
https://stackoverflow.com/questions/45329073
复制相似问题