複数のファイルの正規表現を検索して置換するのに最適なツールは何ですか?
質問
できれば無料のツールが望ましいです。
また、複数の正規表現を検索し、それぞれを異なる文字列に置き換えるオプションも便利です。
解決
パール。真剣に、これによりシステム管理の作業が非常に簡単になります。以下に例を示します。
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 がその役割を果たします。
私なら 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 では、最適に機能する無料の代替手段があります。メモ帳++
「検索」→「ファイル内検索」に進みます。ディレクトリ、ファイル パターンを指定し、正規表現を設定してから一致をプレビューし、最後にすべてのファイルを再帰的に置き換えることができます。
私はこのツールが大好きです:
正規表現の「入力中に」プレビューを表示します...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