无法在MacOSX上运行sed命令,但可以在Linux上运行
我正在使用shell脚本编辑JSON文件上的值。sed命令在Linux中执行时没有任何问题,但在OSX上失败 JSON文件:无法在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\"
{
"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的工具。