Regex Can记事本++;是否将搜索结果保存到文本文件?

Regex Can记事本++;是否将搜索结果保存到文本文件?,regex,file,text,export,notepad++,Regex,File,Text,Export,Notepad++,我需要在成百上千个静态文件中进行大量正则表达式搜索/替换。我希望建立一个审计跟踪,这样我至少知道哪些文件被哪些搜索/替换所触及 我可以在Notepad++中进行正则表达式搜索,它会给我文件名/路径以及每个文件中的点击数。这也给了我一条我并不太在意的路线 我真正想要的是一个包含文件名/路径的单独文本文件。每个文件中的#个点击数将是一个不错的添加,但实际上它只是我要查找的文件名/路径列表 在记事本++的搜索结果窗格中,我可以右键单击并复制,但这包括了所有的行和代码,这太过嘈杂了,尤其是当你得到数百个

我需要在成百上千个静态文件中进行大量正则表达式搜索/替换。我希望建立一个审计跟踪,这样我至少知道哪些文件被哪些搜索/替换所触及

我可以在Notepad++中进行正则表达式搜索,它会给我文件名/路径以及每个文件中的点击数。这也给了我一条我并不太在意的路线

我真正想要的是一个包含文件名/路径的单独文本文件。每个文件中的#个点击数将是一个不错的添加,但实际上它只是我要查找的文件名/路径列表

在记事本++的搜索结果窗格中,我可以右键单击并复制,但这包括了所有的行和代码,这太过嘈杂了,尤其是当你得到数百个匹配项时

有人知道我如何只通过文件名/路径获得这些结果吗?我想要的是:

/about/foo.html
/about/bar.html
/faq/2012/awesome.html
/faq/2013/awesomer.html
/foo/bar/baz/wee.html
etc.
然后我可以将该文件命名为regex_which_search.txt,并在其顶部包含用于搜索和替换的regex。在下面,我列出了它涉及的文件列表

更新看起来最简单的方法(至少我发现)是将所有搜索结果复制到一个新的文本文件中,然后运行以下正则表达式:

^\特琳+$

并将其替换为空字符串。这将只提供文件路径和命中计数,每个条目之间有大量空白。然后运行以下正则表达式:

\s+\n

并替换为:

\n


这将去掉所有不需要的空白,并为您留下一个很好的列表。

也许您需要强大的unix工具

假设您已在c:\tools\gnuwin32中安装

如果您使用该内容替换了replace.bat文件:

@echo off
set BIN=c:\tools\gnuwin32\bin
set WHAT=%1
set TOWHAT=%2
set MASK=%3

rem Removing quotes
SET WHAT=###%WHAT%###
SET WHAT=%WHAT:"###=%
SET WHAT=%WHAT:###"=%
SET WHAT=%WHAT:###=%

SET TOWHAT=###%TOWHAT%###
SET TOWHAT=%TOWHAT:"###=%
SET TOWHAT=%TOWHAT:###"=%
SET TOWHAT=%TOWHAT:###=%

SET MASK=###%MASK%###
SET MASK=%MASK:"###=%
SET MASK=%MASK:###"=%
SET MASK=%MASK:###=%



echo %WHAT% replaces to %TOWHAT%

rem printing matching files
%BIN%\grep -r -c "%WHAT%" %MASK%

rem actual replace
%BIN%\find %MASK% -type f -exec %BIN%\sed -i "s/%WHAT%/%TOWHAT%/g" {} + 
您可以使用所需的输出递归地在屏蔽文件中执行正则表达式替换

replace "using System.Windows" "using Nothing" *.cs

我用来解决这类问题的正则表达式是

 ^\tLine.[0-9]*:.

而且它对我很有效

如果您有Excel可用,并且希望避免使用正则表达式,那么这很有效:

  • Ctrl+A选择所有结果
  • 将所选结果拖放到Excel中(&D)
  • 在第一行创建一个过滤器
  • 过滤掉第一列有“(空白)”的行
  • 选择其余行(即带有文件名的行)并将其复制/粘贴到另一张图纸或任何所需的目标

  • 您也可以按住Ctrl+A、Ctrl+C组合键搜索结果,然后在Excel中使用粘贴选项“使用文本导入向导”,将数据设置为“固定宽度”,并在第二个字符后放置一条分隔线(以便在导入期间删除文件名中的两个前导空格),并使用过滤器过滤掉不需要的行。

    只能使用记事本++两次。几乎一无所知。但是有两个建议,1)在替换之前,请执行
    grep
    我希望您有grep,grep有选项,只打印文件名和路径。2) 构建本地hg/git存储库,签入文件,进行替换。然后检查状态,输出将完全符合您的要求。祝你好运