linux - 使用 sed 删除行

标签 linux bash shell sed

我有一个如下所示的文件。我想删除 foo 之前的所有行,但只保留最后一个 bar 实例。 输入:

bar1
foo
bar1
bar2
bar3
foo
bar5
bar6
bar7
foo

输出:

bar1
foo
bar3
foo
bar7
foo

有人可以帮我实现这个吗?我正在尝试使用 sed 但我所有的尝试都没有给出任何结果。

最佳答案

我希望它不必是 sed。使用 grep-B 选项打印匹配行和它之前的 1 行:

grep -B 1 foo input > output

关于linux - 使用 sed 删除行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19853275/

相关文章:

linux - allegro 是否使用 X11 创建显示窗口?

linux - Linux 上的一对多进程间通信

linux - 使用 Linux 为第一列中的每个不同值查找第二列中的最大值

bash - 为多个 sed 替换优化 shell 脚本

c - 使用 PortAudio 录音 : Pa_GetStreamReadAvailable not work?

c - 如何在C中找到挂载的U盘大小?

php - 如何将html转换成一行字符串?

linux - 菜单和子菜单,然后返回到Linux上的菜单脚本

linux - linux下如何使组内文件的权限与属主相同?

bash - 为文本文件的每一行运行命令 (Bash)