我有一个文本文件,想保留以 开头的行<Path>
,并删除所有其他行。
我该怎么做?
答案1
有一个简单的方法可以实现这一点。您需要执行 2 个步骤。
转到“搜索”菜单 > 查找... > 选择“标记”选项卡。激活正则表达式。搜索
^<Path>
(^
表示行首)。不要忘记勾选“为行添加书签”并按“标记全部”==> 您想保留的所有行都有书签
转至菜单“搜索 - 书签 - 删除未标记的行”
==> 所有未加书签的行都将被删除。
答案2
从 6.3 开始,这实际上可以分两步完成。我认为可以更早完成,因为我第一次尝试时使用的是 5.9。
使用 stema 的帖子作为此答案的基础。现在少了一个步骤。标记线条并删除未标记的线条。完成。详细说明如下。
搜索菜单“查找”。在“查找”对话框中,单击“标记”选项卡。激活正则表达式。搜索
^<Path>
(^
表示行首)。不要忘记勾选“为行添加书签”并按“标记全部”==> 您想要保留的所有行现在都有书签
搜索菜单 -> 书签 -> 删除未标记的行。
==> 全部非已添加书签的行已被删除。
答案3
清洁正则表达式的唯一解决方案
两步变体
正则表达式替换
(?!^.*test.*$)^.+
用您请求的文本替换测试
代替
[\r\n]{2,}
和
\r\n
单步变体
用于^(?!<Path>).*\r\n
用空字符串替换匹配项。通用版本为^(?!.*?test).*\r\n
。这不会删除文件末尾的空行。所有其他行都会被删除,包括多个连续的空行。
解释:
(?!)
是负面查找。^.*test.*$
选择包含所请求文本的整行。[\r\n]{2,}
匹配任何\r\n
出现超过一次的字符,这是 Windows 的新行。如果您有 Linux 或其他操作系统,您可能需要处理这个问题。第二种方法是用一个回车线替换它。
答案4
使用正则表达式替换的更好的解决方案:
(?!^.*SOMETEXT.*$)^.+\r?\n
并替换为空