今回はサクラエディタ内のGrep機能を用いて対象の文字列をフォルダやファイルから検索します。
私はよく対象の文字列がソースコードやLogファイルのどこにあるか調べたりする際に使用します。
わざわざIDEなどの統合開発環境を使用せず、直ぐにソースコードの中から対象の文字列を検索したい時に非常に便利です。
実行環境は下記になります。
PC | Windows10 home 64bit |
サクラエディタバージョン | 2.2.0.1(2019/11/26現在最新) |
今回の対象ファイル構成
上記画像で使用しているdirコマンドについては下記の記事を参考にしてください。
各ファイルの中身
test01
test02
test03
test04
test05
test06
test07
test08
test09
test10
sample01
・D:\test\Grep_sample\test02.txt
test11
test12
test13
test14
test15
test16
test17
test18
test19
test20
sample02
・D:\test\Grep_sample\sample01\test03.txt
test31
test32
test33
test34
test35
test36
test37
test38
test39
test40
sample03
サクラエディタでGrep機能を利用する
1.サクラエディタのGrep機能を起動します。
起動方法は「Ctrl + G」または、メニューから「検索(S)」→「Grep(G)」を選択する。
2.するとGrep条件入力画面が表示されます。
3.ここでGrepしたい文字列として、検索条件に「sample」と入力します。
4.さらに検索するファイルの拡張子はtxtファイル全てとlogファイル全てを対象とするために、ファイルに「*.txt,*log」と入力します。
※複数の拡張子を指定するときはカンマ(,)で区切って指定します。
4.ここで検索対象のフォルダを「D:\test\Grep_sample」とするために参照ボタンを押下して、「Grep_sample」フォルダを選択し「OK」ボタンをクリックします。
※test01.txtファイルを起動して、その後Grep条件入力画面を表示した場合は「現フォルダ」ボタンをクリックすることによって「D:\test\Grep_sample」がGrep対象のフォルダとして指定されます。
5.下記の2つにチェックが入っていることを確認します。
・サブフォルダからも検索する
・正規表現
6.最後に「検索」ボタンをクリックすると、結果が表示されます。
この検索結果はサクラエディタの新しいウィンドウで開かれます。
そのため検索結果もテキスト等で保存することが可能です。
さらに検索結果のうち確認したい行をダブルクリックすると、検索に引っかかったファイルが別ウィンドウとして開かれて該当箇所の確認が出来ます。
※検索結果行の拡張子の次にある()の中身は、左側が何行目、右側が何列目かを表しています。
検索条件に正規表現またはワイルドカードを使用する
検索条件には正規表現やワイルドカードを用いて検索することが出来ます。
1.今回は「test*」を検索条件として、「test○○」を取得します。
2.条件に「test*」と入力し、「検索」ボタンをクリックします。
3.検索結果が表示されます。「test○○」が一覧に表示されています。
検索結果を使って一括で置換する(Grep置換)
Grep置換を利用するには、バージョンが2.2.0.0以降のサクラエディタが必要です。
1.Grep置換を起動します。今回はショートカットキーが設定されていないため、メニューから「検索(S)」→「Grep置換」を選択します。
2.Grep置換を選択すると、Grep置換画面が表示されます。
3.今回は置換前に「sample*」と入力し、置換後に「abcdef」を入力します。
4.また「バックアップ作成」にチェックを入れておくと、置換前の古いファイルを「ファイル名.拡張子.skrold」という名前で保存したうえで、置換後ファイルが元のファイル名で作成されます。
5.上記の設定をした後「置換」ボタンをクリックします。
置換が成功すると、結果として置換処理を行った箇所の一覧が表示されます。
「バックアップ作成」にチェックを入れていたので、元ファイルと同フォルダ内にバックアップファイルが作成されました。
ここで、「sample*」のGrep置換結果の14行目に下記のエラーが出ていると思います。
ファイルの置き換えに失敗しました。[D:\test\Grep_sample\test01.txt.skrold]
これは、サクラエディタではデフォルトで排他制御を行っているから起きる現象です。
排他制御をしていると、アプリケーションで出力しているログファイルをサクラエディタで参照中に、アプリケーションが新たなログを出力しようとするとアプリケーションがこけたりします。
そのためエラーが出力されていました。
その代わりに、 「D:\test\Grep_sample」フォルダの下に「test01.txt.skrnew」が出来ていると思います。
このファイルは「test01.txt」へGrep置換の結果が出力されています。そのため、「test01.txt」は変更されていません。
変更後ファイルにGrepをかけると、変更前の条件では対象が1件になり、変更後の条件で3件の結果が出力されました。
まとめ
以上のいろいろなGrepの操作は、私は実際に仕事でかなり使っています。
膨大にあるソース内を検索したり、ソースを追うことも出来るので是非サクラエディタのGrep機能を使って少しでも業務の効率化することが可能です。