Windowsのgrep代替コマンド【findstr】とオプション~AND/OR複数条件や否定, 正規表現等オプションの使い方

スポンサーリンク
スポンサーリンク

Windowsでテキストファイルの文字列検索を行う

Windows でテキストファイルの中から任意の文字列を含む行を抽出したい場合はPowerShellやコマンドラインで findstrコマンドを使います。

ちなみにテキストファイルの場所でPowerShellやコマンドプロンプトを開きたい場合はそのフォルダ上でShiftを押しながら右クリックすると「PowerShellウィンドウをここに開く」というのが表示されますのでそれをクリックすれば cd (Currend Directory) がそのフォルダになった状態で開きますので便利です。

findstr の基本的な使い方

findstr "検索文字列" "ファイル名"

コマンド結果から特定文字列を含む行だけ抽出したい場合は| (パイプライン) を使います。

[標準出力するコマンド] | findstr "検索文字列" "ファイル名"

findstr のAND条件/OR条件等の複数条件や否定

以下のtest.txtファイルを配置した上で、AND/OR条件の指定をしたコマンドとその結果を示します。

---test.txt---

a b
a c
b c
b d
c D

OR条件

a もしくは b (OR条件) はオプションは不要です。

> findstr "a b" test.txt
a b
a c
b c
b d

AND条件

a かつ b (AND条件) は | (パイプライン) を使います。

> findstr "a" test.txt | findstr "b"
a b

否定条件

a ではない(否定条件)は /v を使います。

> findstr /v "a" test.txt
b c
b d
c D

NOR

a でも bでもない(NOR)も /v でOKです。

> findstr /v "a b"
c D

でも純粋に"a b"(a空白b)という文字列を含む行だけを抽出したい場合はどうするの?というと、/c: オプションを使います。

> findstr /c:"a b"
a b

大文字小文字無視オプション

/i は大文字小文字の区別をしなくなります。(case-insensitive)

> findstr /i d test.txt
b d
c D

正規表現オプション

/r は正規表現での検索が可能になります。

> findstr /r .*D$ test.txt
c D

/b は 行の先頭、/e は行の末尾の検索で使えます。それぞれ正規表現の^ 、 $ にあたります。

> findstr /b b test.txt
b c
b d
> findstr /e b test.txt
a b

その他のオプション

/s

現在のディレクトリとすべてのサブディレクトリから一致するファイルを検索します。

/x

完全に一致する行を出力します。

/n

一致する各行の前に行番号を出力します。

/m

ファイルに一致する行があるときに、ファイル名のみを出力します。

/o

一致する各行の前に文字オフセットを出力します。

/p

印刷不可能な文字を含むファイルをスキップします。

/off[line]

オフライン属性が設定されたファイルをスキップしません。

/a:属性

2 桁の 16 進数で色属性を指定します。"color /?" を参照してください。

/f:ファイル

指定したファイルからファイル一覧を読み取ります (/ を指定するとコンソール)。

/g:ファイル

指定されたファイルから検索文字列を取得します (/ を指定するとコンソール)。

/d:ディレクトリ

セミコロンで区切られた検索されるディレクトリ文字列テキストの一覧を検索します。

スポンサーリンク
スポンサーリンク
スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク
スポンサーリンク