sed 命令在 macOS 下使用存在两个问题:
-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
。