複数のファイルの正規表現を検索して置換するのに最適なツールは何ですか?

StackOverflow https://stackoverflow.com/questions/102083

  •  01-07-2019
  •  | 
  •  

質問

できれば無料のツールが望ましいです。

また、複数の正規表現を検索し、それぞれを異なる文字列に置き換えるオプションも便利です。

役に立ちましたか?

解決

パール。真剣に、これによりシステム管理の作業が非常に簡単になります。以下に例を示します。

perl -pi -e 's/something/somethingelse/g' *.log

他のヒント

sed は素早く簡単に実行できます。

sed -e "s/pattern/result/" <file list>

find を使用して結合することもできます。

find <other find args> -exec sed -e "s/pattern/result/" "{}" ";"

テキストパッド Windows ではうまく機能します。そして、それは非常に優れたエディタでもあります。

これを行うための Windows 用の無料のコマンド ライン ツールを作成しました。それは呼ばれています rxrepl, 、Unicode とファイル検索をサポートします。便利だと思う人もいるかもしれません。

当然のことながら、Perl は適切なシェルと組み合わせて、これをうまく処理します。

for file in @filelist ; do
  perl -p -i -e "s/pattern/result/g" $file
done

これは次と同じ効果があります (ただし、より効率的で、競合状態がありません)。

for file in @filelist ; do
  cat $file | sed "s/pattern/result/" > /tmp/newfile
  mv /tmp/newfile $file
done

Emacs のディレクトリエディタには、マークされたファイルのセットに対して正規表現を検索して置換する `dired-do-query-replace-regexp' 関数があります。

Windows では、以前は好きでした ウィングレップ

Ubuntu では Regexxer を使用します。

Windows上で見つけた複数のファイルの検索と置換について rxFind とても役に立ちます。

Mac OS X の場合は、TextWrangler がその役割を果たします。

私の個人的なお気に入りは パワーグレップ JGソフト製。それはとインターフェースします 正規表現バディ これは、正規表現の作成とテストに役立ち、すべての変更を自動的にバックアップ (および元に戻す機能を提供)、複数のディレクトリを (ファイル名パターンを使用して) 解析する機能を提供し、Microsoft Word、Excel、および Microsoft Word、Excel などのファイル形式もサポートします。 PDF。

PowerGrep Screenshot

私なら bash + find + sed を使います。

Vim が助けてくれました (そして大統領 ;-) )。試す:

vim -c "argdo! s:foo:bar:gci" <list_of_files>

(私は Vim の -c スイッチが大好きです。これは魔法です。または、すでに Vim を使用していてファイルを開いた場合は、次のようになります。

vim <list_of_files>

ただ発行してください:

:bufdo! s:foo:bar:gci

もちろん sed そして perl も有能です。HTH。

私には Unix と Ubuntu を使うという贅沢があります。どちらでも私が使っているのは、 ギャク 行ごとの検索と置換を必要とするもの、特に部分文字列の行ごとの検索に適しています。最近、これはubuntuの数百のファイル(1つのディレクトリ)で数百万行に対する1100の変更を処理するのに最速でした。私はregexxerのファンです

 sudo apt-get install regexxer

Windows では、最適に機能する無料の代替手段があります。メモ帳++

「検索」→「ファイル内検索」に進みます。ディレクトリ、ファイル パターンを指定し、正規表現を設定してから一致をプレビューし、最後にすべてのファイルを再帰的に置き換えることができます。

私はこのツールが大好きです:

http://www.abareplace.com/

正規表現の「入力中に」プレビューを表示します...RE に詳しくない人にとっては素晴らしい...一度に数百、数千のファイルを変更するのは非常に高速です...

そして、変更を元に戻してみましょう...

非常に素晴らしい...

パトリック・スティル -http://www.podiotools.com

「テキストパッド」が有効な答えである場合、私はそれをお勧めします 崇高なテキスト 手を下げて。

マルチカーソル編集は、一般的に置換を行うためのさらに効率的な方法だと思いますが、「ファイルから検索" は、一括正規表現/単純な検索置換の最上位層です。

j編集のファイル内の正規表現検索と置換はかなりまともです。ただし、それだけに使用する場合は少しやりすぎです。また、あなたが要求した multi-expression-replace もサポートしていません。

ツールを見つけました RxFind 便利です(無料のOSS)。

ブラケット (ソース コード、deb/Ubuntu、OSx、Windows) では結果が適切に視覚化されており、結果を個別に選択して置換を適用できます。標準テキスト、大文字と小文字を区別するかどうか、および正規表現で検索できます。非常に重要:ファイルとディレクトリのパターンを検索から除外できます。

少なくとも 25 年間、私は多数のファイルの大規模な置換に Emacs を使用してきました。走る etags 検索するファイルのセットを指定するには、次のようにします。

$ etags file1.txt file2.md dir1/*.yml dir2/*.json dir3/*.md

次に、Emacsを開いて実行します tags-query-replace, 、正規表現と置換を求めるプロンプトが表示されます。

\b\(foo\)\b
\1bar
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top