You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何删除下一行以其内容开头的行,保留每个序列最后一行?

单行命令实现保留每组最长前缀行

需求场景

现有文件内容如下:

My dog
My dog is running
My dog is running fast
A cat
A cat is black
A cat is black and small

需要保留每组中最长的那一行(后一行均为前一行的前缀扩展,即每组最后一行),最终输出:

My dog is running fast
A cat is black and small

解决方案(AWK单行命令)

使用AWK命令可直接实现该逻辑,命令如下:

awk 'NR>1 && index($0, prev) != 1 {print prev} {prev=$0} END {print prev}' your_file.txt

命令解释

  • NR>1:从第二行开始判断,规避第一行无前置对比行的情况
  • index($0, prev) != 1:检查当前行是否不是以上一行(prev变量存储的内容)开头,若是则说明上一行是上一组的最长行,打印该行
  • {prev=$0}:将当前行存入prev变量,作为下一行的对比基准
  • END {print prev}:处理完所有行后,打印最后一组的最长行(即最后存入prev的内容)

内容的提问来源于stack exchange,提问作者Vitalie Colin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 18:27:22