3

何百もの静的ファイル全体でかなりの数の正規表現検索/置換を行う必要があります。私は監査証跡を作成しようとしているので、少なくともどのファイルがどの検索/置換によって影響を受けたかを知っています。

Notepad ++で正規表現検索を実行すると、ファイル名/パスと各ファイルのヒット数がわかります。また、あまり気にしない行番号も表示されます。

私が本当に欲しいのは、ファイル名/パスの別のテキストファイルです。各ファイルのヒット数は素晴らしい追加ですが、実際には、私が探しているファイル名/パスのリストにすぎません。

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

これにより、不要な空きスペースがすべて削除され、素敵なリストが残ります。

4

3 に答える 3

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
于 2013-02-21T21:17:10.303 に答える
1

この種の問題に対して私が使用する正規表現は

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

そして、それは私のために働く

于 2013-10-29T08:02:27.860 に答える