【findstr】の使い方~and/or複数条件や否定, 正規表現, エスケープやパイプ等オプション~

findstr は Windows で grep のようにテキストファイルの文字列検索を行う

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

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

findstr の基本的な使い方

C:¥> findstr "検索文字列" "ファイル名"

複数ファイル指定することもできます。

C:¥> findstr "検索文字列" test1.txt test2.txt

*によるワイルドカードでの指定もできます。以下はtestを含むファイル全てから検索する場合。

C:¥> findstr "検索文字列" *test*

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

C:¥> [標準出力するコマンド] | findstr "検索文字列"

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

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

---test.txt---

a b
a c
b c
b d
c D

OR条件

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

C:¥> findstr "a b" test.txt
a b
a c
b c
b d

AND条件

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

C:¥> findstr "a" test.txt | findstr "b"
a b

否定条件

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

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

NOR

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

C:¥> findstr /v "a b"
c D

空白のエスケープができない、そんなときは

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

C:¥> findstr /c:"a b"
a b

複数並べてor条件にも出来ます。

C:¥> findstr /c:"a b" /c:"b d"
a b
b d

なお、通常のエスケープは \ で OK です。例えば $ という文字列を検索したい場合は "\$" で検索します。

C:¥> findstr "\$"

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

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

C:¥> findstr /i d test.txt
b d
c D

正規表現オプション

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

C:¥> findstr /r .*D$ test.txt
c D

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

C:¥> findstr /b b test.txt
b c
b d
C:¥> findstr /e b test.txt
a b

その他のオプション

/s

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

/x

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

/n

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

/m

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

/o

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

/p

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

/off(line)

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

/a:属性

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

/f:ファイル

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

/g:ファイル

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

/d:ディレクトリ

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

【厳選 3 冊】Windows を学ぶための本

Windows Serverのエディションやライセンス、用語といった基本から、セットアップ、ネットワーク、ユーザー/グループ、ディスク、ハードウェア、アクセス許可、クォータ、ボリュームシャドウコピー(VSS)、ファイル/フォルダー共有、プリンター、サーバー管理、WebサーバーやFTPサービスを提供するInternet Information Services(IIS) 10.0、Hyper-Vやコンテナー等の仮想化技術、Active Directoryまで説明します。
Active Directoryの概念および導入、構成管理方法を詳細な手順と豊富な画面を使ってわかりやすく解説します。本書では、ドメインサービスを中心に解説し、その他のサービスについても概要を解説します。Active Directoryを初めて使う方でも、画面を見ながら手順に従って操作するだけで簡単に目的の作業を行うことができます。ある程度使いなれている方には、Active Directoryをより使いこなすためのリファレンスとしてお使いいただけます。
全操作、全機能が載ってるから迷わない!基本から便利技・トラブル対応まで全部わかる!基本の操作から最新アプリ、昔ながらの操作も全部できる!はじめてのタッチ操作、はじめてのWindows10の人も安心!「やりたいこと」がすぐできるTIPS400!わかりやすい索引で「あれがしたい」「これがしたい」から探せる、側にあれば安心な1冊!自由自在Windows10を操ろう。

IT/インフラエンジニアの地位とスキル向上のために

関連記事

IT 技術の進化はとどまることを知りません。矢継ぎ早に新たな技術が出てきたり、数年前の技術が時代遅れになったりと、IT エンジニアは勉強し続ける運命のようです。 それをどう思うかはあなた次第。 ビジネスの基本は『付加価値を与える[…]

IMG
関連記事

nesuke の考える NW エンジニアの2つの道 ネットワークエンジニアには 2 つの道があります。 1 つはネットワーク構築一筋で、L4 までをひたすらきっちりと構築していく道。 もう 1 つはネットワークを軸として深堀し[…]

IMG