linux - sed 删除找到的最后一个匹配项之上的所有内容

标签 linux bash unix sed

我有一个文件:users.txt,如下所示:

    Name
    Jack
    Name
    Jackson
    Name
    Peter

我需要删除所有 ABOVE last 找到的匹配项 Name 以便文件看起来像:

    Name
    Peter

我尝试在网上搜索,但只找到可以实现此目的的 awk 命令。 我需要将其sed 以便使用-i 选项进行保存。我遇到过使用 awk 重定向 > 标准输出时文件有时为空的地方。

非常感谢您的宝贵时间和帮助。

最佳答案

你可以使用 tacawk 两次:

tac file | awk '{print} /Name/{exit}' | tac
Name
Peter

关于linux - sed 删除找到的最后一个匹配项之上的所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29348740/

相关文章:

linux - 是否可以在 Linux bash 中限制子进程的 pid?

swift - 如何在 Linux 上快速线程 sleep

unix - 有没有一种方法可以编辑符号链接(symbolic link)而不先删除它?

c++ - 在特定点打印结构变量

java - 有调用系统脚本/程序的API吗?

arrays - ZSH for 循环数组变量问题

mysql - Linux 上的 Apache,Windows 上的 MySql

linux - 如何在 Linux 上的 shell 脚本中获取屏幕分辨率

linux - ". ./filename "命令是如何工作的

linux - 在 sudo 调用的 Bash 脚本中识别用户