MacOS与Linux中sed的不同

在两个环境中看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"