删除最后一个字符串之前的所有行

jyu*_*429 2 bash sed

如何在最后一次出现字符串之前删除所有行.就像我有一个看起来像的文件一样

Icecream is good
And
Chocolate is good
And
They have lots of sugar

如果我希望所有行之后包括最后一次出现的"And",那么最干净的方法是什么?具体来说,我想要

And
They have lots of sugar
Run Code Online (Sandbox Code Playgroud)

我在做,sed -n -E -e '/And/,$p' file但我看到这给了我第一次.

pot*_*ong 5

这可能适合你(GNU sed):

sed -n '/And/h;//!H;$!d;x;//p' file
Run Code Online (Sandbox Code Playgroud)

用包含的行替换保留空间中的任何内容And.将所有其他行追加到保留空间.在文件末尾,交换保留空间的模式空间,并在结果与所需字符串匹配时打印出结果And.

  • @ User112638726它表示如果使用的最后一个正则表达式不匹配,则将模式空间附加到保留空间. (2认同)