Notepad++ 如何删除记事本++;
我有各种日志文件,我想用类似grep的功能过滤它们 我以前的做法是:Notepad++ 如何删除记事本++;,notepad++,Notepad++,我有各种日志文件,我想用类似grep的功能过滤它们 我以前的做法是: 标记单词/字符串 搜索/标记 启用选项“书签行” 全部标记 接近 搜索/书签 “删除未标记的行” 对于这个过程,我录制了一个宏并将其存储在shortcuts.xml: <Macros> <Macro name="Trim Trailing and save" Ctrl="no" Alt="yes" Shift="yes" Key="83"> <A
- 标记单词/字符串
- 搜索/标记
- 启用选项“书签行”
- 全部标记
- 接近
- 搜索/书签
- “删除未标记的行”
shortcuts.xml
:
<Macros>
<Macro name="Trim Trailing and save" Ctrl="no" Alt="yes" Shift="yes" Key="83">
<Action type="2" message="0" wParam="42024" lParam="0" sParam="" />
<Action type="2" message="0" wParam="41006" lParam="0" sParam="" />
</Macro>
<Macro name="grep01" Ctrl="no" Alt="no" Shift="no" Key="0">
<Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam="IM1 001" />
<Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1702" wParam="0" lParam="784" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1615" sParam="" />
<Action type="2" message="0" wParam="43051" lParam="0" sParam="" />
</Macro>
是否可以用通配符或实际标记的文本替换字符串“IM1 001”,然后只需按组合键即可执行此操作?不可能:
记录为宏的搜索始终将其所有参数硬连线
请参见EmEditor具有书签功能,可实现此功能。在“查找”对话框中,输入字符串,然后单击“书签”而不是“查找”。然后,编辑>书签>此文档,您可以删除或提取到新文件,甚至可以反转带书签的行,然后继续删除或提取,等等。很想知道如何使用PowerShell实现类似的功能(我对PowerShell几乎一无所知),并得出以下结论。这将覆盖原始文件,我只对其进行了一次非常快速的测试,因此显然不要将其用于任何未备份的文件:) PowerShell脚本(removelines.ps1): 要保存在记事本++的“运行”框中的命令:
powershell.exe -ExecutionPolicy Unrestricted -NoLogo -File "<Path to script goes here>\removelines.ps1" "$(FULL_CURRENT_PATH)"
powershell.exe-ExecutionPolicy Unrestricted-NoLogo-File“\removelines.ps1”“$(完整当前路径)”
当您运行它(在当前选项卡上打开/打开要修改的文件)时,系统将提示您输入搜索字符串。运行它之后,Notepad++将提示重新加载文件-现在应该缺少任何不包含搜索字符串的行。我不确定您是否对这个问题有过满意的答案,但从它的声音来看,您可以完全在Notepad++中使用regex find and replace来完成此操作 例如,给定来源:
Line 1: lorem ipsum
Line 2: test test test
Line 3: test IM1 001 test test
Line 4: IM1 001
Line 5: nothing here
Line 6: aaaaaaaaaaaaaaaaaIM1 001aaaaaaaaaa
Line 7: active
Line 8: inactive
Line 9: value
Line 10: blah blah
Line 11: …..
Line 12: …..
Line 13: this contains the IM1 001
替换:^((?!IM1 001)。*?$\R*
(其中IM1 001
是您要查找的文本/表达式)带有:无 剩下的就是带有您指定的搜索短语的行:
Line 3: test IM1 001 test test
Line 4: IM1 001
Line 6: aaaaaaaaaaaaaaaaaIM1 001aaaaaaaaaa
Line 13: this contains the IM1 001
如果要保留空行,只需从表达式末尾删除\R*
:
Line 3: test IM1 001 test test
Line 4: IM1 001
Line 6: aaaaaaaaaaaaaaaaaIM1 001aaaaaaaaaa
Line 13: this contains the IM1 001
我认为记事本++的宏不支持变量。可能有一个插件可以提供帮助(可能是NPPExec),但如果您需要定期执行此任务,那么可能值得为其编写一个PowerShell脚本。谢谢,我将在记事本++社区问这个问题,也许他们可以帮助我使用PowerShell脚本。我经常将日志文件的输出复制粘贴到记事本++。然后我想用特定的词或术语过滤行。好吧,这很奇怪。嘿,乔恩,我在拼图交换中把你的一个问题加入书签,等待正确的答案,但是没有,所以我对答案很好奇。这是“这个词是什么…”的问题。我试着在聊天室里找到你,但没有运气。。。请给我通过扰流板标签或类似的答案,这样我可以救赎自己。这个评论是超级垃圾,所以我会在几个小时内删除它。很抱歉给您带来不便
Line 3: test IM1 001 test test
Line 4: IM1 001
Line 6: aaaaaaaaaaaaaaaaaIM1 001aaaaaaaaaa
Line 13: this contains the IM1 001