2013-02-21 76 views
3

我需要在數百和數百個靜態文件中執行相當多的正則表達式搜索/替換。我期望建立一個審計跟蹤,以便至少知道哪些文件被什麼搜索/替換觸動。記事本++可以將搜索結果保存到文本文件嗎?

我可以在Notepad ++中執行我的正則表達式搜索,它給出了文件名/路徑和每個文件中的命中數。它也給了我不太在乎的線路#s。

我真正想要的是文件名/路徑的單獨文本文件。每個文件中的命中次數都是很好的補充,但實際上它只是我所追求的文件名/路徑列表。

在記事本++的搜索結果窗格中,我可以做一個右鍵單擊和複製,但是包括所有行#s和代碼,這些噪聲太大,特別是當你得到數百個匹配。

任何人都知道我可以如何獲得這些結果只是文件名/路徑?

/about/foo.html 
/about/bar.html 
/faq/2012/awesome.html 
/faq/2013/awesomer.html 
/foo/bar/baz/wee.html 
etc. 

然後我可以命名該文件regex_whatever_search.txt,並在它的頂部包括用於搜索正則表達式和替換:我喜歡的東西后我。在那之下,我已經列出了它所觸及的文件列表。

UPDATE什麼樣子做的(至少我發現)是隻複製所有的搜索結果到一個新的文本文件,並運行下面的正則表達式的最簡單的事情:

^\ TLINE 。+ $

並將其替換爲空字符串。這將給你只是文件路徑和命中與每個條目之間的大量空白空間。然後運行下面的正則表達式:

\ S + \ n

並將其替換:

\ n

那將去掉所有不必要的空白空間,你會留下一個不錯的名單。

+0

永遠只能用記事本++的兩倍。幾乎一無所知。但有兩點建議,1)替換前,做'grep'我希望你有grep,grep有選項,只能打印文件名和路徑。 2)建立一個本地的hg/git倉庫,檢查你的文件,做替換。然後檢查狀態,輸出將正是你想要的。祝你好運.. – Kent 2013-02-21 20:39:42

回答

1

也許你需要的Unix工具電源

假設你有GNUWin32安裝在c:\工具\的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" {} + 

你可以做regex替換掩碼文件遞歸你輸出所需的

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

我用這種問題的regulat表達

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

它爲我的作品

相關問題