我有以下代码

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的行之后停止删除。 Goji和BSD版本的sed都可以使用。

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

10-13 02:40