前回記事: 改行・タブ・空白行の置換や削除にも便利なサクラエディタで使える正規表現とは? では、サクラエディタの正規表現についてご紹介しました。第五回となる今回は、便利なgrep機能とver2.2.0.0から使用可能になったgrep置換機能についてご紹介したいと思います。
目次
1.1 grep機能とは
1.2 サクラエディタのgrep機能
1.3 サクラエディタにはgrep置換機能もある
2.1 複数ファイルや除外条件を指定してgrepする
2.2 検索条件に正規表現やワイルドカードを使う
2.3 検索結果を使って一括で置換する
2.4 複数行の文字列を検索条件にする
2.5 検索結果を保存する
1.grep機能とは?
1.1 grep機能とは
grepとは、元々UNIXコマンドが由来です。1つのファイル中から該当箇所を探す検索機能とは異なり、複数のファイルを対象として一括で検索し、指定した文字列が登場する場所を抜粋して表示するコマンドとなっています。
1.2 サクラエディタのgrep機能
サクラエディタのgrep機能もUNIXと同様に、複数ファイルが格納されているフォルダを指定して配下のファイル全てから該当箇所を抜粋し、登場位置をリスト化することができます。さらにそのリストをクリックすると、該当するファイルがサクラエディタで自動的に開いて該当箇所が表示されます。
1.3 サクラエディタにはgrep置換機能もある
バージョン2.2.0.0以降のサクラエディタには、grep機能を強化した「grep置換」機能があります。これは「検索結果に対してすべて置換する」と同様に、「grep結果に対してすべて置換する」機能となっています。
2.grep機能の便利な使い方
2.1 複数ファイルや除外条件を指定してgrepする
grep機能を起動する方法は、2通りあります。
・「Ctrl+G」を押す
・「上部メニュー>検索>grep」を選択する
すると、図のような検索ボックスが表示されます。
(1)検索条件とする文字列を入力します。
(2)検索対象とするファイルを指定します。
ファイル名には常にワイルドカードが利用可能で、デフォルトでは全ファイルを対象とする「*.*」が入力されています。
例えばファイル名が「sourceナントカ」なものを検索対象としたい場合、「source*.*」と入力します。また.javaファイル全てを対象としたい場合は、「*.java」と入力します。
なお特定の条件に当てはまるファイルをgrep対象から除外したい場合、「ファイル」に指定する条件の先頭に!を付ける(例: !*.obj)と、その条件に当てはまるファイルを対象から外すことができます。
(3)検索対象とするフォルダを指定します。
フォルダのパスを入力する場所の右端に、[...]という小さなボタンがあります。これをクリックするとフォルダ選択ダイアログが表示されます。
この画面でフォルダを選択すると、選択したフォルダのパスがフォームに自動的に入力されます。
(4)「サブフォルダからも検索」にチェックを入れると、(3)で指定したフォルダの配下にあるファイル全てが検索対象になります。
(5)「英大文字と小文字を区別する」にチェックを入れると、(1)で入力した検索条件と大文字か小文字かまで一致しなければ、検索対象にならないようになります。チェックを外すと、大文字小文字問わず検索対象となります。
ほか結果の出力形式などを選択し「検索」ボタンを押すと、結果が表示されます。
この検索結果はサクラエディタの新しいウィンドウとして開き、テキスト等で保存することができます。さらに検索結果のうち確認したい行をダブルクリックすると、そのファイルをさらに別ウィンドウで開き、該当箇所を表示することができます。
なお検索結果のうち、ファイルパスの次にある座標のようなもの(x,y)は、それぞれx:何行目のy:何列目を表しています。
2.2 検索条件に正規表現やワイルドカードを使う
検索条件には、正規表現やワイルドカード、を使用することができます。
(6)まず「正規表現」にチェックを入れます。
(7)検索条件に正規表現やワイルドカードを使用します。
サクラエディタにおける正規表現の使用方法については、前回の記事をご覧下さい。
(8)ワイルドカードを用いたことで、「variable_01」だけでなく「variable_02」なども対象になりました。
2.3 検索結果を使って一括で置換する
検索結果を使って一括で置換するには、バージョン2.2.0.0以降のサクラエディタが必要です。起動にショートカットキーは設定されておらず、「上部メニュー>検索>grep置換」を選択します。
すると図のような検索ボックスが表示されるので、通常のgrep時と同じように項目を埋めていきます。さらに、「置換後」の文字列を入力します。
また「バックアップ作成」にチェックを入れておくと、置換前の古いファイルを「ファイル名.拡張子.skrold」という名前で保存した上で、置換後ファイルが元のファイル名で作成されます。
置換が成功すると、結果として置換処理を行った箇所の一覧が表示されます。
「バックアップ作成」にチェックを入れていたので、元ファイルと同フォルダ内にバックアップファイルが作成されました。
変更後ファイルにgrepをかけると、変更前の条件では対象が0件になり、変更後の条件で7件の結果が出力されました。
2.4 複数行の文字列を検索条件にする
通常のサクラエディタでは、複数行に渡る文字列を指定してgrepすることはできません。しかし複数行検索&置換に対応できるパッチファイルが、有志の方により配布して頂いているようです。
【sourceforge - #54 正規表現による複数行検索対応(簡易版)】
https://sourceforge.net/p/sakura-editor/patchunicode/54/
2.5 検索結果を保存する
サクラエディタの画面に表示されているgrep結果は、通常のテキストと同じく「ファイル>名前を付けて保存」にて保存可能です。
3.grep機能の活用場面
grep機能の活用場面としては、プログラム改修等で変数名に変更があった場合が挙げられます。膨大にあるソース全体から、その変数名を使っている場所を抜粋することは目視では大変な上に、見落としてしまうかもしれません。そんな場合にgrep機能があれば業務をとても効率化することができます。さらに修正対象のファイルを1つ1つ開かなくても、一括で新しい変数名に変更することが可能なのです。
ぜひ2.2.0.0から対応したgrep置換機能を、使ってみて下さいね。
次回は2つのソースファイルを比較して、差分を取る方法をご紹介致します。
よければ合わせてご覧下さい。
当サイトプロエンジニアのコンサルタントが厳選したおすすめのフリーランス案件特集はこちら
特集ページから案件への応募も可能です!
実際にフリーランスエンジニアとして活躍されている方のインタビューはこちら