PowerShellで検索文字列をカウントしてみよう

公開日: 

PowerShellで検索文字列をカウントしてみよう

PowerShellで文字列検索してみよう」で行った検索結果の件数を取得してみます。

検索のコマンドに ().Countを付けることで件数を取得できます。

.Countを使ってみよう

都道府県一覧のテキストファイル「都道府県.txt」を、Cドライブのtestフォルダにダウンロードしてください

★ダウンロードはこちらから「右クリック」→「名前を付けて保存」

都道府県.txtの内容は下記のとおりです。
——-
北海道
青森県
岩手県
宮城県
秋田県
山形県
福島県
茨城県
栃木県
群馬県
埼玉県
千葉県
東京都
神奈川県
新潟県
富山県
石川県
福井県
山梨県
長野県
岐阜県
静岡県
愛知県
三重県
滋賀県
京都府
大阪府
兵庫県
奈良県
和歌山県
鳥取県
島根県
岡山県
広島県
山口県
徳島県
香川県
愛媛県
高知県
福岡県
佐賀県
長崎県
熊本県
大分県
宮崎県
鹿児島県
沖縄県
——-

例1:都道府県.txt から 「府」を含む行の件数を取得してみます

コマンド:

(Select-String “府” c:\test\都道府県.txt).Count
または、
(Select-String -Path “c:\test\都道府県.txt” -Pattern “府”).Count

実行結果

2

Windows PowerShell_20140609-215038

例2:都道府県.txt から 「山」で始まる行の件数を取得してみます

コマンド:

(Select-String “^山” c:\test\都道府県.txt).Count
または、
(Select-String -Path “c:\test\都道府県.txt” -Pattern “^山”).Count

実行結果

3

例3:都道府県.txt から 「島●県」 を含む行の件数を取得してみます(●は任意の文字)

コマンド:

(Select-String “島.県” c:\test\都道府県.txt).Count
または、
(Select-String -Path “c:\test\都道府県.txt” -Pattern “島.県”).Count

実行結果

1

例4:都道府県.txt から 「島」か「鳥」 を含む行の件数を取得してみます(OR検索)

コマンド:

(Select-String “島”,”鳥” c:\test\都道府県.txt).Count
または、
(Select-String -Path “c:\test\都道府県.txt” -Pattern “島”,”鳥”).Count

実行結果

6

例5:都道府県.txt から 「京」と「都」 を含む行の件数を取得してみます(AND検索)

コマンド:

(Select-String “京” c:\test\都道府県.txt | Select-String “都”).Count
または、
(Select-String -Path “c:\test\都道府県.txt” -Pattern “京” | Select-String “都”).Count

実行結果

2

例6:都道府県.txt から 「県」を含まない行の件数を取得してみます(NOT検索)

コマンド:

(Select-String -Path “c:\test\都道府県.txt” -NotMatch -Pattern “県”).Count
または、
(Select-String “県” c:\test\都道府県.txt -NotMatch).Count

実行結果

4

例7:都道府県.txt から 「道」と「県」を含まない行の件数を取得してみます(NOT検索)

コマンド:

(Select-String -Path “c:\test\都道府県.txt” -NotMatch -Pattern “道”,”県”).Count
または、
(Select-String “道”,”県” c:\test\都道府県.txt -NotMatch).Count

実行結果

3

例8:都道府県.txt から 「道」と「県」を含まず、「都」を含む行の件数を取得してみます

コマンド:

(Select-String -Path “c:\test\都道府県.txt” -NotMatch “道”,”県” | Select-String “都”).Count
または、
(Select-String “都” c:\test\都道府県.txt | Select-String “道”,”県” -NotMatch).Count

実行結果

2

少し実践的に

たとえばアクセスログファイル「C:\access.log」から 「GET index.html」 を含む行の件数を取得したい場合は、

コマンド:

(Select-String “GET index.html” C:\access.log).Count

さらに、特定のIPアドレスを含む行の件数は除きたい場合は、

コマンド:

(Select-String “GET index.html” C:\access.log | Select-String “10.90.xx.xx”,”210.100.200.30″ -notmatch).Count

などとします。

NEXT

シェアありがとうございます

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