【发布时间】:2016-10-25 20:08:42
【问题描述】:
假设你有以下文本:
abc
123
abc
456
789
abc
abc
我想删除所有“abc”行,只保留一个。我不介意排序。结果应该是这样的:
abc
123
456
789
【问题讨论】:
-
Younes,你最好回来接受@Marc.2377 的回答。这是天才。
假设你有以下文本:
abc
123
abc
456
789
abc
abc
我想删除所有“abc”行,只保留一个。我不介意排序。结果应该是这样的:
abc
123
456
789
【问题讨论】:
我刚遇到同样的问题,发现 Visual Studio Code 包“排序行”。有关详细信息,请参阅 Visual Studio Code 市场(例如 Sort lines)。
这个包有“排序线(唯一)”选项,它为我做了。注意行首/结尾处的任何空白。它们影响线条是否被认为是唯一的。
【讨论】:
按字母顺序对行进行排序(如果还没有),然后执行以下步骤:
(基于此相关问题:How do I find and remove duplicate lines from a file using Regular Expressions?)
在这种情况下,要么求助于 VS Code 之外的解决方案(请参阅here),或者 - 如果您的文档不是很大并且您不介意向“全部替换”按钮发送垃圾邮件 - 请按照前面的步骤进行操作,但在步骤 4 和 5,输入:
(基于Remove specific duplicate lines without sorting)
注意:行数过多 (1000+) 的文件块;可能导致 VS Code 崩溃;在某些情况下可能会引入空行。
搜索:((^[^\S$]*?(?=\S)(?:.*)+$)[\S\s]*?)^\2$(?:\n)?
替换为:$1
然后点击“全部替换”按钮重复出现次数。
当您单击按钮时行数停止减少时,您就会知道这已经足够了。导航到文档的最后一行以密切关注。
【讨论】:
((^[^\S\r\n]*?(?=\S)(?:.*)+$)[\S\s]*?)^\2$(?:\r?\n)? 使我的 vscode 崩溃......我在一个文件中查找了 229 行。 :(
^(.*)(\n\1)+$。删除重复行后,我想查看 csv 中第一列重复的所有行,并想修改正则表达式。
【讨论】:
安装 DupChecker 扩展,点击 F1,然后输入“Check Duplicates”。
它将检查重复项并询问您是否要删除它们。
【讨论】:
vscode v1.62 中引入了一个从选择中删除重复行的命令:
Delete Duplicate Lines 在命令面板中
或
editor.action.removeDuplicateLines 作为键绑定中的命令
(此命令没有默认键绑定)
这是一个非常有趣的扩展:Transformer
特点:
独特的线条
从文档中删除重复的行 如果没有选择,则为当前块
作为新文档的唯一行
在新文档中打开唯一行 如果没有选择,则为当前块
除了“Unique Lines”命令外,我没怎么玩过它,但它似乎做得很好(包括尝试宏记录器!)。
【讨论】:
【讨论】:
^(.+\n)(?=(?:.*\n)*?\1),因为您的正则表达式删除了一个不希望出现的空行。还是投了赞成票。
xxx(?=…) 是一个前瞻匹配。因此,它确保“xxx”之后的任何内容都与“...”匹配,但不会推进搜索。 (?:…) 只是一个括号,不计入括号计数。 .*\n 是(可能是空的)行的模式。 * 表示可能有几行,甚至没有。星号 (*) 后面的 ? 表示我们想要尽可能少的行。因为\1 跟在这个表达式后面,所以我们会提前查找所有与\1 不匹配的行,直到找到匹配\1 的行。我希望这能说明问题。
实际上不是在 Visual Studio Code 中,但如果它有效,它就有效。
这不是最佳答案,因为您指定了 Visual Studio Code,但正如我所说:如果它有效,那么它有效 :)
【讨论】:
它具有极快的原生置换函数。
Edit > Permute Lines > Unique 或 ⇧⌘U,以及Edit > Permute Selections > UniqueVisual Studio Code 是我的日常司机。但是,我让Sublime Text 在这些情况下处于待命状态。
【讨论】:
如果您不介意在您的 VS 代码中添加一些 Vim。你可以安装 Vim 仿真插件。
然后就可以使用vim命令了
:sort u
它将对行进行排序并删除重复项
【讨论】: