linux - Linux 上的 sed 与 FreeBSD 上的 sed

标签 linux bash sed freebsd

我有以下代码

cat file1 | sed '0,/2014-08-30/d'

在file1里面,有

2014-08-30
2015-03-29 + /homes/eva/xv/xvalen20/aaa
2015-03-29 + /homes/eva/xv/xvalen20/IZP/blabla
2015-03-29 + /homes/eva/xv/xvalen20/IZP/wg*d s1a
2015-03-29 + /homes/eva/xv/xvalen20/IZP/wg*ds1a
2015-03-29 + /homes/eva/xv/xvalen20/newfile
2015-03-29 + /homes/eva/xv/xvalen20/wgdsa

在 Linux 机器上,输出与 file1 相同,除了第一行(这就是我的目标)。在 FreeBSD 机器上,输出与 file1 内容完全相同。

我发现了一些关于 sed 之间差异的网站,但我无法弄清楚这个。

最佳答案

Mac OS X 上的 BSD sed 也不喜欢 0 行号。

解决方法:

(echo "Hello"; cat file) | sed '1,/2014-08-30/d'

这会给出包含您想要删除的 Hello 的第 1 行,并在包含 2014-08-30 的行之后停止删除。它与 GNU 和 BSD 版本的 sed 的工作方式相同。

关于linux - Linux 上的 sed 与 FreeBSD 上的 sed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29334537/

相关文章:

unix - bash 输入和输出文件中的 sed 命令

linux - 如何检查 Linux 符号链接(symbolic link)是否正在使用? (删除未使用的符号链接(symbolic link))

xml - 使用 chef 的 sed 命令

bash - 如何捕获 shell 脚本正在运行的原始命令?

linux - 如何在从 csv 文件获取参数的 bash 脚本中运行命令

bash - Powershell 是否具有与 bash 子 shell 等效的功能?

c - 使用 pty 使用 GCC 编译时出错

linux - 更改文件权限 Linux

regex - 打印文件直到第 N 个匹配项

linux - 使用 sed 意外更改文件