在Mac和Linux系统上都能使用的sed原地编辑标志是什么?
我们知道,Linux 中的 **sed** 命令代表流编辑器,主要用于对文件执行操作,这些操作通常包括搜索单词、替换单词或插入内容等等。这是一个非常有用的命令,可以在 Linux 内核中找到。
还应该注意的是,OS X 附带的 **BSD** (Berkeley Software Distribution) **sed** 需要 **-i** 标志才能工作,而 **GNU** sed则不需要。
使 **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
广告