【问题标题】:sed -i doesent work on MacOs (sed: 1) and work on linux [duplicate]sed -i 不适用于 MacOs(sed:1)并适用于 linux [重复]
【发布时间】:2018-08-29 02:43:18
【问题描述】:

我在 Linux 上成功使用 sed -i 修改了文件中的 JSON 值。

$> sed -i '/brand/c\   \"brand\": \"'valueModified'\"' ./config/brand.config.json

但在 MacOS 上我得到:

sed: 1: "./config/brand.config.json": 命令代码无效。

我正在尝试在 linux 和 macOS 上的 shell 脚本中使用此命令。

谢谢

【问题讨论】:

  • Mac 上的man sed 是否提到了-i 选项?
  • 在 OSX 上使用 sed -i.bak '...'

标签: linux bash shell sed command-line


【解决方案1】:

POSIX sed 实现允许在非 POSIX UNIX 实现不允许的情况下替换 I 行。 OSX 和 BSD 一样可以这样实现:

cp -p ./config/brand.config.json ./config/brand.config.json.tmp;
sed '/brand/c\   \"brand\": \"'valueModified'\"' ./config/brand.config.json.tmp > ./config/brand.config.json

【讨论】:

    猜你喜欢
    • 2011-12-16
    • 2020-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-28
    • 2015-07-13
    • 2021-05-21
    • 1970-01-01
    相关资源
    最近更新 更多