MacOS与Linux中sed的不同
- 2020 年 4 月 1 日
- 筆記
在两个环境中看sed的命令,可以发现返回的并不相同:
Linux环境中:

linux
MacOS环境中:

MacOs
其二个显示的是所有的了,明显比linux中的命令少。
如果在MacOS中执行sed -i 命令的话,会提示:invalid command code; 改成 sed -i .bak 或者在正则表达式之前加"" (比如sed -i "" 's/ /_/g' 1.csv)就可以了。此外,两者对于n的处理也不相同。
这是由于MacOS自带的sed等命令是基于BSD的,存在一些不足。可以用homebrew下载gnu-sed:
brew install gnu-sed --with-default-names
安装完之后使用gsed/gcat等,如果要替代sed等,可以将以下写到环境:
export PATH="/usr/local/opt/coreutils/libexec/gnubin:$PATH" export MANPATH="/usr/local/opt/coreutils/libexec/gnuman:$MANPATH"