Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法在MacOSX上运行sed命令,但可以在Linux上运行_Linux_Bash_Macos_Shell_Sed - Fatal编程技术网

无法在MacOSX上运行sed命令,但可以在Linux上运行

无法在MacOSX上运行sed命令,但可以在Linux上运行,linux,bash,macos,shell,sed,Linux,Bash,Macos,Shell,Sed,我正在使用shell脚本编辑JSON文件上的值。sed命令在Linux中执行时没有任何问题,但在OSX上失败 JSON文件: { "HOST": "http://localhost:5000", ... } Sed命令: sed -i '/"HOST"/c\ \"HOST\": \"http:\/\/localhost:4000\",' config.json 我无法在OSX上运行此功能 我尝试了以下几种选择: sed -i "" -E '/"HOST"/c\ \"HOST\"

我正在使用shell脚本编辑JSON文件上的值。sed命令在Linux中执行时没有任何问题,但在OSX上失败

JSON文件:

{
  "HOST": "http://localhost:5000",
   ...
}
Sed命令:

sed -i '/"HOST"/c\  \"HOST\": \"http:\/\/localhost:4000\",' config.json
我无法在OSX上运行此功能

我尝试了以下几种选择:

sed -i "" -E '/"HOST"/c\  \"HOST\": \"http:\/\/localhost:4000\",' config.json

但是运气不好。

因为我无法在两个平台上使用相同的命令,所以我会有条件地检查操作系统并执行每个兼容的sed命令。首先不要使用
sed
来处理JSON。使用类似于
jq
jq.HOST=”http://localhost:4000“'tmp.json>tmp&&mvtmp-tmp.json
@chepner是的,我知道jq。我不希望有依赖关系,因为此脚本将在许多环境中运行。
sed
也是一种依赖关系;这只是错误的依赖关系。不要仅仅因为30年以上的旧工具与您的目标系统一起提供,就将其视为“正确”的工具。如果需要处理JSON,请使用解析JSON的工具,而不是依赖特定格式JSON的工具。