在文本文件中,我需要删除与下一行完全相同的行。请参见下面的示例。

输入:

I like
I like apples
I like apples and oranges
more
more everyday
more everyday
more everyday the more
more everyday the more I play
I
I like

输出:

I like apples and oranges
more everyday the more I play
I like

单程:

$ perl -lne 'print $last unless /^\Q$last/; $last = $_;
             END { print $last }' input.txt
I like apples and oranges
more everyday the more I play
I like

sed过滤器读取下一行并删除前一行,只要它匹配:

sed ':0;N;s/^\(.*\)\n\1/\1/;t0;P;D'

欢迎来到 SO!如果您包括您尝试过的内容以及您遇到问题的确切位置,那就更好了。

只是快一点!

你能给我一个 input.txt 的例子吗?我似乎无法让它删除任何东西,不确定我输入的方式是否错误,它在 Mac 上不起作用,或者它根本不做我们想要的。

@proxsi - 无论你写sed … input.txt还是sed …
@Armali 我和你一样输入了。它不适用于 Mac OSX 10.15.3 Catalina。但是它在 Debian 8 上运行良好。感谢检查。

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部