0
我有以下內容sed命令失敗值
(ABC)
我創建一個環境變量使用以下命令
setenv ABC {"a":{"b":"http://c","d":"http://e"}}
然後我跑sed命令文件
sed 's|(ABC)|('"$ABC"')|' myFile
此方法返回此
a:b:http://c a:d:http://e
它shuld實際上什麼我缺少
我有以下內容sed命令失敗值
(ABC)
我創建一個環境變量使用以下命令
setenv ABC {"a":{"b":"http://c","d":"http://e"}}
然後我跑sed命令文件
sed 's|(ABC)|('"$ABC"')|' myFile
此方法返回此
a:b:http://c a:d:http://e
它shuld實際上什麼我缺少
由於braces and double quotes are metacharacters in C shell返回此
{"a":{"b":"http://c","d":"http://e"}
任何想法,你必須要麼使用反斜線逃避他們,就像這樣:
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
無關的問題)。
請注意,在csh/tcsh下的sed中,即使使用單引號,也需要轉義'!'。 – stevesliva
可能是shell問題......在bash上爲我工作......'s =「{'key':{'key':'value'}}」''後跟'echo'(ABC)'| sed's /(ABC)/('「$ s」')/''give'({'key':{'key':'value'}})' – Sundeep
謝謝Sandeep,我已經更新了問題實際值,http中的'/'是一個問題,所以我用管道,但現在遇到了其他問題,你可以看看更新的問題嗎? –
再次,它適用於我在bash ...我的猜測仍然是無論你使用的外殼可能需要其他工作 – Sundeep