ファイルから文字列を検索findstrコマンドの解説

findstrコマンドの使い方

findstrコマンドはfindコマンドより少し高度な検索できます。使い方はほとんどfindコマンドと同じですが、findstrコマンドはオプションが多く、検索方法の種類が豊富です。

findコマンドでできなければ、findstrコマンドを利用したらできることもあります。

findstrコマンドの使い方は下記のとおりです。

コード

findstr [オプション] “[検索する文字]” [ファイル名]

早速実践してみます。

下記のファイルがあり、「太郎」という言葉を検索します。

コードはこちら

findstr “太郎” ex1.txt

コマンドスクリプトの結果は下記のとおり。

「太郎」という言葉が入った行の表示がされました。このような単純な検索であれば、findコマンドと大差ないのですが、次から紹介する方法はfindコマンドにはない機能なので、紹介します。

  /R  検索文字列をあいまい検索する

findコマンドではファイルのあいまい検索はできましたが、検索文字列をあいまい検索できませんでした。一方、findstrコマンドはファイル名も文字列もあいまい検索をすることが可能です。

方法は検索文字列に「.」や「*」を挿入します。

例えば、下記ファイルの「~太郎」ついた言葉のみを抽出します。

下記のコードように「太郎」の前に1文字入っているかどうかを検索する場合は「.」を利用します。

コード

findstr /r “.太郎” ex3.txt

コマンドスクリプトの検索結果がこちら。

検索結果で1行目の「太郎です。」でヒットしませんでした。この理由は「.太郎」が「何らかの1文字が前に入った太郎」という意味です。このため、「太郎です」は1文字前に何も入っていないので、検索結果に表示されませんでした。

もし、太郎も検索結果に表示したい場合は下記の方法を取ります。

1文字も入らないでいい場合は「*」を利用して、「.*」を記載します。

コード

findstr /r “.*太郎” ex3.txt

下記がコマンドスクリプトの結果です。先ほどの結果と違って、1行目の「太郎です。」が検索されていることが分かります。

複数の文字列を検索する

複数の文字列を検索する場合は「 」スペースを利用する方法と/gオプションを使って別リストファイルから検索する方法があります。

スペースを利用して、複数の文字列を検索する方法

例えば、下記テキストファイルの「一郎」と「遼太」を検索します。

コード

findstr “一郎 遼太” ex3.txt

コマンドスクリプトの結果はこちら

オプション/gを利用して、複数の文字列を検索する方法

下記のようなリストから検索してみます。

コード

findstr /g:list.txt ex3.txt

コマンドスクリプトの検索結果はこちら

複数のファイルを検索する

複数のファイルを検索するときはオプションの「/f」を利用します。

実際にやってみましょう。

下記の「ex1.txt」「ex2.txt」「ex3.txt」ファイルを用意します。

次にファイルのリストを用意します。

このファイル内の「太郎」を検索してみます。

コード

findstr /f:faillist.txt “太郎”

コマンドスクリプトの検索結果はこちら。

  行の先頭にある文字を検索方法

行の先頭にある文字を検索する方法はオプションの「/b」を使用します。

例えば、下記のファイルの先頭の文字の「太郎」を検索します。

コード

findstr /b “太郎” ex3.txt

コマンドスクリプトの結果はこちら。

findstrコマンドのまとめ

/?を使ったコマンド解説のまとめはこちら。

使い方

FINDSTR [オプション] “文字列” [[ドライブ:][パス]ファイル名[ …]]

・オプション

/B行の先頭にあるパターンを検索します。
/E行の末尾にあるパターンを検索します。
/L検索文字列をリテラルとして使用します。
/R検索文字列を正規表現として使用します。
/S現在のディレクトリとすべてのサブディレクトリから一致する
/I検索するときに大文字と小文字を区別しません。
/X完全に一致する行を出力します。
/V一致しない行のみを出力します。
/N一致する各行の前に行番号を出力します。
/Mファイルに一致する行があるときに、ファイル名のみを出力します。
/O一致する各行の前に文字オフセットを出力します。
/P印刷不可能な文字を含むファイルをスキップします。
/A:属性 2 桁の 16 進数で色属性を指定します。
/F:ファイル 指定したファイルからファイル一覧を読み取ります
/C:文字列 指定された文字列をリテラル検索文字列として使用します。
/G:ファイル 指定されたファイルから検索文字列を取得します
/D:ディレクトリ

  

コメント

タイトルとURLをコピーしました