gpt4 book ai didi

vim - 根据部分行比较删除重复行

转载 作者:行者123 更新时间:2023-12-04 22:48:50 26 4
gpt4 key购买 nike

我有一个包含数千行文本的文本文件,如下所示。

123 hello world
124 foo bar
125 hello world

我想通过检查该行的一个子部分来测试重复项。对于上面它应该输出:
123 hello world
124 foo bar

有没有 vim 可以执行此操作的命令?

更新 : 我在 window 机器所以不能使用 uniq

最佳答案

这是一个 bash 命令:

sort -k2 input | uniq -s4
  • sort -k2排序时将跳过第一个字段
  • uniq -s4将跳过前 4 个字符


  • 在vim中,你可以调用上面的外部命令:
    :%!sort -k2 % | uniq -s4
  • 第二个%将扩展为当前文件名。


  • 实际上,您可以使用以下命令在 vim 中进行排序:
    :sort /^\d*\s/
  • vim 排序时会跳过匹配的数字

  • 排序后,使用此命令删除重复行:
    :%s/\v(^\d*\s(.*)$\n)(^\d*\s\2$\n)+/\1/
  • 为了避免过多的反斜杠转义,我使用 \v在模式开启 非常神奇 .
  • 在多线模式中,$将匹配换行符之前的位置( \n )。不过,我认为这里没有必要。
  • 您可以制作自己的正则表达式。
  • 关于vim - 根据部分行比较删除重复行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13254010/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com