Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/195.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Notepad++ 如何删除记事本++;_Notepad++ - Fatal编程技术网

Notepad++ 如何删除记事本++;

Notepad++ 如何删除记事本++;,notepad++,Notepad++,我有各种日志文件,我想用类似grep的功能过滤它们 我以前的做法是: 标记单词/字符串 搜索/标记 启用选项“书签行” 全部标记 接近 搜索/书签 “删除未标记的行” 对于这个过程,我录制了一个宏并将其存储在shortcuts.xml: <Macros> <Macro name="Trim Trailing and save" Ctrl="no" Alt="yes" Shift="yes" Key="83"> <A

我有各种日志文件,我想用类似grep的功能过滤它们

我以前的做法是:

  • 标记单词/字符串
  • 搜索/标记
    • 启用选项“书签行”
    • 全部标记
    • 接近
  • 搜索/书签
    • “删除未标记的行”
对于这个过程,我录制了一个宏并将其存储在
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