我有一个包含以下内容的文件
(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"}
关于我缺少的任何想法
答案 0 :(得分:0)
从braces and double quotes are metacharacters in 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"}}
相反,如果您不在setenv
语句中转义或引用该值,就像您在问题中所做的那样,您将获得:
$ echo "$ABC"
a:b:http://c a:d:http://e
那是你得到的(sed
与问题无关)。