2011-05-29 15:05:02 +0000 2011-05-29 15:05:02 +0000
221
221
Advertisement

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

Advertisement

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

我该怎么做?

Advertisement

答案 (10)

315
315
315
2011-06-03 20:23:06 +0000

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

  1. 转到搜索菜单>查找….. > 选择 “标记 "选项卡。激活正则表达式。搜索^<Path> (^代表行的开始)。不要忘记勾选 "书签行",然后按 "全部标记”

  2. 进入菜单 “搜索 - 书签 - 删除未标记的行"。

67
67
67
2013-02-27 16:03:51 +0000

这个其实从6.3开始可以分两步完成。我认为可以更早的完成,因为我第一次尝试的时候是5.9。

用stema的帖子作为这个答案的基础。现在少了一个步骤了。标记线,删除未标记的线。大功告成。详细说明如下:

  1. 搜索菜单 “查找"。2.在查找对话框中,点击 "标记 "选项卡。2.激活正则表达式。2.搜索^<Path>^是指行的开始)。不要忘记勾选 "书签行",然后按 "全部标记”

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

30
Advertisement
30
30
2013-07-08 16:51:09 +0000

清理regex的解决方案

两步变体

1.regex替换

2.替换

单步变体

单步变体

使用^(?!<Path>).*\r\n替换空字符串的匹配。一般化的版本是^(?!.*?test).*\r\n。_这不会删除文件末尾的空行。

说明:

1.(?!)是一个否定的查找,^.*test.*$选择了包含请求文本的整行。

5
5
5
2015-12-17 11:43:30 +0000

在我看来,最简单的方法是使用 “查找当前文档中的所有内容 "功能,然后将结果复制到一个新的文件中,或者选择所有的内容并替换到当前文件中。只需在搜索结果上点击右键,然后复制/粘贴即可。

4
Advertisement
4
4
2013-06-21 16:36:49 +0000

进入菜单 Search -> Find… -> 激活正则表达式。搜索"^Path“(^代表行的开始)。

点击 "查找当前文档中的所有内容 "按钮。选择复制/粘贴到记事本++中的新标签页中。 在这个新标签页中,点击菜单 Search -> Replace… -> 激活正则表达式。在 "查找是什么:"字段中,使用模式:"行 \d+:",将 "替换为: "字段留空。

3
3
3
2011-05-30 01:02:36 +0000

如果你真的想匹配<Path>而不是文件系统路径,你可以用Perl在命令行中尝试这样做:

perl -pe " if ($_ !~ /<Path>/) { s/$_// } " < in.txt > out.txt

3
Advertisement
3
3
2011-05-29 18:07:54 +0000

这样做很笨拙,但是把它全部复制到Excel,然后用=IF(LEFT(A1,6)="<Path>",A1,""),把那个公式一路复制下来。然后把它复制回记事本++中。这不是很理想,但很简单(如果你有Excel的话)。警告。它对缩进的行不好用(Excel会移位等)。

2
2
2
2011-05-30 03:00:09 +0000

没有简单的方法可以用记事本++做你想要的事情。你需要下载一个程序到你的电脑上,或者用VB编写一些脚本(我想你是在Windows上)。sed实用程序是*nix上的最爱,可以在GnuWin http://gnuwin32.sourceforge.net/packages/sed.htm )的伟大的人那里找到适用于Windows的程序。你可以下载这个程序,然后在命令提示符中运行命令。

删除所有不包含的行: sed -i '/^<PATH>/!d' file

打印所有包含的行到一个新文件中: sed -n '/^<PATH>/p' file > newfile

我建议你使用打印你想要的行到一个新文件中。这样做的原因是,你可能在第一次使用的时候就无法得到regex语句。sed实用程序使用正则表达式基本语法(查看参考文献 http://www.regular-expressions.info/reference.html )。如果是类似于*nix路径(/var/www),那么你需要转义/字符,这样你的regex语句才会有效。如果我在文件中转义了/字符,那么这个命令就会抛出一个错误。你可以用反斜杠字符转义(如/)。

1
Advertisement
1
1
2018-05-01 14:37:57 +0000

更好的解决方案是用regex替换:

(?!^.*SOMETEXT.*$)^.+\r?\n

&001

并替换为无。

0
0
0
2011-05-29 15:16:28 +0000

使用Search->Replace,输入一个像^[^].*这样的正则表达式,然后用Regular expression替换为空字符串。下一步是寻找空行,用\n\n搜索\n,用Extended多次替换,直到0 occurrences were found.为止(根据文件格式的不同,使用\r\n\r\n\r\n)。如果你的空行数非常多,那么在搜索字符串中使用\n\n\n\n\n\n\n甚至更多的\n:s会更快。

Advertisement
Advertisement