#author("2019-08-13T21:36:28+09:00","","")
#navi(../)
* 正規表現で文字列検索をする・findstr [#eb440334]
findstrコマンドで正規表現を用いた文字列検索をすることが可能です。~
ただし、findstrの正規表現ですが、基本的なものだけとなっています。~
以下にfindstrを使用した例をいくつか記します。

#htmlinsertpcsp(win-top.html,win-sp.html)
#contents
#htmlinsertpcsp(win-top.html,win-sp.html)

* 関連記事 [#p8d0c7bb]
-[[正規表現で文字列検索をする・findstr>コマンドプロンプト/正規表現で文字列検索をする・findstr]]
-[[テキストファイルに行番号を付けて出力する方法・findstr>コマンドプロンプト/テキストファイルに行番号を付けて出力する方法・findstr]]
-[[複数の文字列を指定し文字列検索する・findstr>コマンドプロンプト/複数の文字列を指定し文字列検索する・findstr]]


* findstrで使ってみる [#u25a4266]
以下にfindstrを使った例をいくつか記します。

** オプションなしでfindstrを実行(パイプを使用) [#i442eb36]
dirで出力されたファイル一覧からDIRを文字列を表示しています。
 dir | findstr 検索文字列
- 実行結果
 c:\Users\sakura>dir | findstr DIR
 2012/09/25  17:04    <DIR>          .
 2012/09/25  17:04    <DIR>          ..
 2012/09/12  15:06    <DIR>          .thumbnails
 2012/09/12  14:33    <DIR>          Contacts
 2012/09/27  16:39    <DIR>          Desktop
 2012/09/25  17:49    <DIR>          Documents
 2012/09/27  15:53    <DIR>          Downloads
 2012/09/12  14:33    <DIR>          Favorites
 <snip>

** オプションなしでfindstrを実行(ファイル指定) [#b75aaba6]
Windowsディレクトリにあるlogファイルを対象にie9を検索した結果です。~
 findstr 検索文字列 対象ファイル
- 実行結果
 c:\Windows>findstr ie9 *.log
 WindowsUpdate.log:2012-09-25    16:59:54:518     980    e8c     DtaStor WARNING:
  Attempted to add URL http://download.windowsupdate.com/msdownload/update/softwa
 re/secu/2012/09/ie9-windows6.1-kb2744842-x64_5d795303eee8eeb1d0f927edea10102ec59
 4f9c2.msu for file XXlTA+7o7rHQ+Sft6hAQLsWU+cI= when file has not been previousl
 y added to the datastore
 WindowsUpdate.log:2012-09-25    17:00:07:241     980    e8c     Handler Adding i
 e9-windows6.1-kb2744842-x64.cab (entire file) to request list.
 WindowsUpdate.log:2012-09-25    17:00:10:225     980    e8c     DnldMgr   * Down
 <snip>
この例では、*を使用し拡張子がlogであるファイル全てを対象として検索しています。

** 検索文字列の間にスペースが含まれる場合の検索方法 [#r4011ff3]
検索文字列の間にスペースが含まれる場合は、/C:オプションを使用します。
 findstr /C:"スペースを含む検索文字列" *.log
- 実行結果
Windowsディレクトリにあるlogファイルを対象にWindows 7 operating system detected文字列を検索した結果です。~
 c:\Windows>findstr /C:"Windows 7 operating system" *.log
 IE9_main.log:00:04.625: INFO:    Windows 7 operating system detected.

** 行の先頭から始まる文字列の検索 [#s0262e1e]
いくつかの検索方法を以下に記します。
- オプション/Bを使用
オプション/Bを利用して指定した検索文字列の検索条件が先頭から始まることを指定します。
検索するファイル内容
 C:\Users\sakura\Desktop>type text.txt
 abcdef1
 defabc1
 abcdef2
 defabc2
 abcdef3
 defabc3
実行結果
 C:\Users\sakura\Desktop>findstr /B abc text.txt
 abcdef1
 abcdef2
 abcdef3

- オプション/Rによる先頭文字検索
オプション/Rにより正規表現検索であることを指定しています。''^''は先頭をあらわしています。
 findstr /R "^検索文字列" ファイル名
実行結果
 C:\Users\sakura\Desktop>findstr /r "^abc" text.txt
 abcdef1
 abcdef2
 abcdef3

- スペースを含む先頭文字検索
スペースを含む先頭文字列の検索は以下のようにしました。
 findstr /R /C:"^スペースを含む検索文字列" ファイル名
検索するファイル内容
 C:\Users\sakura\Desktop>type text2.txt
 a bcdef1
 defa bc1
 a  bcdef2
 defa  bc2
 a  bcdef3
 defa  bc3
実行結果
 C:\Users\sakura\Desktop>findstr /r /c:"^a bc" text2.txt
 a bcdef1

** 行の最後にある文字列検索 [#w05cc10d]
いくつかの検索方法を以下に記します。
- オプション/Eを使用
オプション/Eを利用して指定した検索文字列の検索条件が行の末尾にあることを指定します。
 findstr /e 検索文字列 ファイル名
検索するファイル内容
 C:\Users\sakura\Desktop>cat text3.txt
 abc2def1
 def2abc1
 abc3def2
 def3abc2
 abc1def3
 def1abc3

実行結果~
検索文字列が行末にある行が表示されます。
 C:\Users\sakura\Desktop>findstr /e 3 text.txt
 abcdef3
 defabc3

 C:\Users\sakura\Desktop>findstr /e c3 text.txt
 defabc3

- オプション/Rによる行末文字検索
オプション/Rにより正規表現検索であることを指定しています。''$''は行末をあらわしています。

実行結果
 C:\Users\sakura\Desktop>findstr /r "3$" text.txt
 abcdef3
 defabc3

** 正規表現による検索例 [#ncda398a]
オプション/Rを使用した正規表現検索の例をいくつか紹介します。
- [数値-数値]で指定する
使用したテキストファイル
 C:\Users\sakura\Desktop>cat text4.txt
 windows1
 windows2
 windows3
 windows4
 windows5
 windows6
 windows7
 windows8
 windows9
実行結果
 C:\Users\sakura\Desktop>findstr /r "windows[3-5]" text4.txt
 windows3
 windows4
 windows5

- [数値-数値]以外
''^''を指定してNOTとしています。
 C:\Users\sakura\Desktop>findstr /r "windows[^3-7]" text4.txt
 windows1
 windows2
 windows8
 windows9

** 検索結果に行番号を付ける [#b13adace]
オプションNを使用することにより検索された行の行番号が表示されます。

実行例
 C:\Users\sakura\Desktop>findstr /n /r "windows[^3-7]" text4.txt
 1:windows1
 2:windows2
 8:windows8
 9:windows9

** 大文字小文字を区別しない [#lc6f7a04]
オプションIを使用することにより大文字・小文字を区別しないようになります。

実行例
 C:\Users\sakura\Desktop>findstr windows text4.txt
 windows1
 windows2
 windows3
 windows4
 windows5
 windows6
 windows7
 windows8
 windows9
 
 C:\Users\sakura\Desktop>findstr Windows text4.txt
 
 C:\Users\sakura\Desktop>findstr /I WiNdoWs text4.txt
 windows1
 windows2
 windows3
 windows4
 windows5
 windows6
 windows7
 windows8
 windows9

* findstrのヘルプ [#za18181b]
上記では、findstrの使いかたの一部を紹介しました。~
findstr /?で使用方法が表示されますので、詳細な検索方法を知りたい場合は、findstr /?を実行してヘルプをみてみてください。

#htmlinsertpcsp(win-btm.html,win-sp.html)

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS