如何使用 sed 在 mac 上更改行 (Darwin)

Cla*_*ied 2 linux bash sed darwin

我不明白 Darwin 与 CentOS 的区别。这不是第一个让我失败的命令。确切的命令在 CentOS 上运行良好,但在 Darwin 上则不然。我阅读了 sed ON MY MBP 的手册页,理论上,它应该可以在 MBP 上工作。

有人能告诉我在 Darwin 上使用 sed 的正确语法是什么吗?完全相同的命令适用于 CentOS 服务器。但是,我运行 sed 所需的所有文件都存储在我的本地开发笔记本电脑(MBP)上。我不想将所有测试文件复制到我们的远程 CentOS 服务器,只是为了运行这个本来应该起作用的愚蠢的 cmd。

这是我尝试在 MBP 上运行的 cmd:

sed -i 's/instance=ge/blah/g' 100usr_defSemaAvail_mult_12hr.jmx
Run Code Online (Sandbox Code Playgroud)

MBP 上的错误说明了这一点

sed: 1: "100usr_defSemaAvail_ ...": invalid command code u
Run Code Online (Sandbox Code Playgroud)

预先感谢您帮助这个沮丧的灵魂。

Bar*_*mar 5

sed在Mac 上使用的BSD 版本中,该-i选项需要一个包含用于备份文件的后缀的参数。如果您不想创建备份文件,则必须提供一个空参数:

sed -i '' 's/instance=ge/blah/g' 100usr_defSemaAvail_mult_12hr.jmx
Run Code Online (Sandbox Code Playgroud)

您输入的命令指定s/instance=ge/blah/g为后缀和100usr_defSemaAvail_mult_12hr.jmx编辑命令。

这与 Linux 上使用的 GNU 不同sed,后者期望将后缀附加到-i选项上(例如-i.bak)。所以-i它本身就意味着没有备份文件。