删除 Notepad++ 中的所有行,除了包含我需要的单词的行?

248 notepad++

我有一个文本文件,想保留以 开头的行<Path>,并删除所有其他行。

我该怎么做?

ste*_*ema 362

有一种简单的方法可以实现这一点。您需要执行 2 个步骤。

  1. 转到搜索菜单 > 查找... > 选择“标记”选项卡。激活正则表达式。搜索^<Path>(^用于行开始)。不要忘记选中“书签行”并按“全部标记”

    ==> 你想保留的所有行都有一个书签

  2. 转到菜单“搜索 - 书签 - 删除未标记的行”

    ==> 所有没有加入书签的行都被删除。

  • +1。不错,不知道这个 还有“删除未标记的行”或“剪切/复制标记的行”的选项可以节省一些时间。 (52认同)
  • 您可以跳过第 2 步,因为(至少从 v6.4.5 开始)可以选择“删除未标记的行”。 (23认同)
  • 起初我遇到了麻烦,因为我的 Notepad++ 版本 (6.2.3) 没有名为“Mark Tab”的菜单项。相反,您必须转到“搜索”-&gt;“查找...”-&gt; 单击“标记”选项卡。而且您不再需要反转书签。Notepad++ 现在具有“删除未标记的行”。但是你的提示对我帮助很大!谢谢! (6认同)
  • 我使用 Notepad++ 已经很长时间了,之前我从来不知道什么是“书签”。令人惊讶的是,该工具有多么强大,而我对它知之甚少。 (5认同)

Rec*_*zer 68

从 6.3 开始,这实际上可以分两步完成。我认为它可以比这更早完成,因为我第一次尝试时使用的是 5.9。

使用stema的帖子作为这个答案的基础。现在少了一步。标记线并删除未标记的线。完毕。详细说明如下。

  1. 搜索菜单“查找”。在“查找”对话框中,单击“标记”选项卡。激活正则表达式。搜索^<Path>(^用于行开始)。不要忘记选中“书签行”并按“全部标记”

    ==>您要保留的所有行现在都有一个书签

  2. 搜索菜单 -> 书签 -> 删除未标记的行。

    ==>删除所有书签行。

  • 这花了我 10 秒,而其他解决方案花了我 20 秒以上。谢谢! (3认同)

小智 31

仅清洁正则表达式的解决方案

两步变体

  1. 正则表达式替换

    (?!^.*test.*$)^.+
    
    Run Code Online (Sandbox Code Playgroud)

    用您请求的文本替换 test

  2. 代替

    [\r\n]{2,}
    
    Run Code Online (Sandbox Code Playgroud)

    \r\n

单步变体

用于^(?!<Path>).*\r\n用空字符串替换匹配项。通用版本将是^(?!.*?test).*\r\n. 这不会删除文件末尾的空行。删除所有其他行,包括多个连续的空行。

解释:

  1. (?!)是消极的向上看。^.*test.*$ 选择包含请求文本的整行。

  2. [\r\n]{2,}\r\n一旦这是 Windows 新行,则匹配任何出现的次数。如果你有 Linux 或其他操作系统,你可能需要处理这个问题。第二种是用一条返回线代替它。


小智 6

在我看来,最简单的方法是使用“在当前文档中查找所有内容”功能,然后将结果复制到一个新文件中,或者全选并替换当前文件。

这将找到包含您的文本的所有行并在底部列出它们。只需右键单击搜索结果并复制/粘贴。


小智 5

使用正则表达式替换更好的解决方案:

(?!^.*SOMETEXT.*$)^.+\r?\n
Run Code Online (Sandbox Code Playgroud)

并替换为任何东西

  • 欢迎使用超级用户!愿意为那些可能不知道正则表达式的每一位的作用的人解释一下吗? :) (3认同)

小智 0

使用“搜索”->“替换”并输入正则表达式(例如)^[^ ].*并使用 全部替换为空字符串Regular expression。下一步是找到空行,搜索\n\n替换并多次\n使用,直到(使用并取决于文件格式)。如果连续有很多空行,则在搜索字符串中使用甚至更多:s 会更快。Extended0 occurrences were found.\r\n\r\n\r\n\n\n\n\n\n\n\n\n