Skip to content

Instantly share code, notes, and snippets.

@shhider
Created August 24, 2017 09:00
Show Gist options
  • Save shhider/41f0b71e4818c9c54761ba64f9ff41ea to your computer and use it in GitHub Desktop.
Save shhider/41f0b71e4818c9c54761ba64f9ff41ea to your computer and use it in GitHub Desktop.

sed 命令在 macOS 下使用存在两个问题:

-i参数之后必须带参数值

-i参数表示直接对文件进行操作,可提供一个参数值作为后缀名,使 sed 在替换前对文件进行备份,如sed -i ".bak" "s/aaa/bbb/g" filename。这个在 macOS 下必需,不需要备份的传空。

可能会出现编码问题

执行命令后,可能出现sed: RE error: illegal byte sequence的报错。

网上的解决办法是设置 bash:

export LC_CTYPE=C 
export LANG=C

不过副作用是其它非英文编码都会无法显示。

我的办法是在 sed 命令前加上 LC_ALL=C,即LC_ALL=C sed -i ".bak" "s/aaa/bbb/g" filename

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment