我需要在数百个数百个静态文件中进行相当多的正则表达式搜索/替换。我正在寻找建立一个审计线索,所以我至少知道什么搜索/替换触及了哪些文件。
我可以在Notepad ++中进行正则表达式搜索,它会给出文件名/路径和每个文件中的命中数。它也为我提供了#s,我并不十分关心。
我真正想要的是文件名/路径的单独文本文件。每个文件中的匹配数量都是一个很好的补充,但实际上它只是我所追求的文件名/路径列表。
在Notepad ++的搜索结果窗格中,我可以进行右键单击和复制,但这包括所有行#和代码,这些噪音太大,特别是当你收到数百个匹配时。
任何人都知道我如何才能将这些结果仅用于文件名/路径?我追求的是:
/about/foo.html
/about/bar.html
/faq/2012/awesome.html
/faq/2013/awesomer.html
/foo/bar/baz/wee.html
etc.
然后我可以将该文件命名为regex_whatever_search.txt,并在其顶部包含用于搜索和替换的正则表达式。在那之下,我已经获得了它触摸的文件列表。
更新看起来最容易做的事情(至少我已经发现)只是将所有搜索结果复制到一个新的文本文件中并运行以下正则表达式:
^ \ TLINE。+ $
用空字符串替换它。这将为您提供文件路径和命中计数,每个条目之间有大量空白空间。然后运行以下正则表达式:
\ S + \ n
并替换为:
\ n
这将剥夺所有不需要的空白空间,你将留下一个不错的清单。
答案 0 :(得分:1)
也许你需要unix工具的强大功能
假设您在c:\ tools \ gnuwin32
中安装了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
答案 1 :(得分:1)
我用于此类问题的正则表达式是
^\tLine.[0-9]*:.
它对我有用
答案 2 :(得分:0)
如果您有Excel并希望避免使用正则表达式,则此方法效果很好:
您还可以Ctrl + A,Ctrl + C搜索结果,然后在Excel中使用粘贴选项“使用文本导入向导”,说数据为“固定宽度”,并在第二个字符后放置一个单独的换行(以在导入过程中删除文件名中的两个前导空格),然后使用过滤器过滤掉不需要的行。