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

如何移除文件中末尾三位字符重复的冗余行?

移除文件中末尾三位字符重复的行

需求说明

给定文件file.txt,需要移除所有末尾三位字符与之前行重复的行,只保留首次出现该末尾三位的行。比如示例输入:

aabbccj
biukghk
hgkfhff
hsgfccj
 jflgsfs
fskfyhd
bfsbkhd
fjlfghk

期望输出:

aabbccj
biukghk
hgkfhff
 jflgsfs
fskfyhd
bfsbkhd

(注:hsgfccj末尾三位是ccj,和第一行aabbccj重复;fjlfghk末尾三位是ghk,和第二行biukghk重复,所以这两行被移除)

Python 实现脚本

你可以用以下Python脚本处理文件,它会读取原文件,筛选符合要求的行并输出到新文件(或覆盖原文件,注意备份):

seen_endings = set()
output_lines = []

with open('file.txt', 'r') as f:
    for line in f:
        # 去除行尾换行符,保留原始行的前导/尾随空格
        stripped_line = line.rstrip('\n')
        # 提取末尾3个字符(如果行长度不足3,直接保留)
        ending = stripped_line[-3:] if len(stripped_line) >=3 else stripped_line
        
        if ending not in seen_endings:
            seen_endings.add(ending)
            output_lines.append(stripped_line)

# 将结果写入新文件(替换'output.txt'为'file.txt'可直接覆盖原文件,建议先备份)
with open('output.txt', 'w') as f:
    f.write('\n'.join(output_lines) + '\n')

脚本说明

  • 用seen_endings集合记录已出现的末尾字符组合,保证查询效率
  • 遍历每行时保留原始格式(除自动换行符),不破坏原有空格
  • 长度不足3的行直接以整行作为标识,避免误删
  • 结果写入新文件,防止直接修改原文件导致数据丢失

命令行工具实现(awk)

如果习惯用命令行,也可以用awk一行搞定:

awk '{ending=substr($0, length($0)-2); if (!seen[ending]++) print $0}' file.txt > output.txt
  • substr($0, length($0)-2)提取每行末尾3个字符(awk下标从1开始)
  • seen[ending]++记录末尾组合的出现次数,首次出现时执行打印

内容的提问来源于stack exchange,提问作者Ahana Kk

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 12:01:44