在 Mac 和 Linux 上都可以使用的 sed 就地标志是什么?

我们知道,Linux中的SED命令代表流编辑器,主要用于对文件执行功能,这些功能通常是搜索一个词,或者替换它,或者插入一些东西等等。这是一个非常有用的命令,可以在 Linux 内核中找到。

还应该注意的是,OS X 附带的BSD(伯克利软件发行版)sed确实需要-i标志才能工作,而GNU则不需要。

使 GNU 版本的SED在 Mac OS X 上运行的一种方法是直接安装gnu-sed以及默认名称,这将确保您不必在两个操作系统上运行不同的命令.

为了在 Mac OS X 上安装gnu-sed,您可以考虑如下所示的步骤。

命令

brew install gnu-sed --with-default-names

这将安装gnu-sed并且您可以使用它,就像在其他 Linux 机器上使用它一样。

更好的解决方案是使用下面显示的命令,它是就地替换命令以及作为.bak的文件扩展名,这将帮助您为 Mac OS X 和 GNU 实现相同的命令。

命令

sed -i.bak ‘s/sample/new_sample’ filename

在上面的命令中,单引号中的字符串表示我们将特定文件中的单词替换为new_sample

现在让我们首先在 GNU 上运行上面的命令,看看输出结果如何。

GNU

$ sed --version | head -1
GNU sed version 4.2.2

$ echo 'sample' > 1.txt

$ sed -i.bak 's/sample/new_sample/' ./1.txt

$ ls
1.txt 1.txt.bak

$ cat ./1.txt
new_sample

Mac OS X

$ sed --version 2>&1 | head -1
sed: illegal option -- -

$ echo 'sample' > 1.txt

$ sed -i.bak 's/sample/new_sample/' ./1.txt

$ ls
1.txt
1.txt.bak

$ cat ./1.txt
new_sample