powershell

PowerShellで文字列の出現回数カウント

先日500M程度のCSVファイルの件数をカウントする事になった際作成しました。もともと改行が含まれるデータをCSV出力する事になったらしく、改行コード(CR/LF)を『<改行>』という文字列に置き換えてファイル出力したとの事です。つまりデータ件数をカウントするにはこの『<改行>』文字列をカウントすればいいって事ですね。

はじめに

以下のようなCSVファイルがあったとします。

PS D:\sample> Get-Content .\test2.txt
1,にしかわ,10,西川<改行>2,あずま,20,東<改行>3,きたむら,30,北村<改行>4,みなみ,40,南<改行>
PS D:\sample>

スクリプト

対象文字列を空白に置き換えて、置き換え前の長さから引き算で導出するっていう考えです。

Param([String]$Path)
$inputFile = $Path
$findChar = "<改行>"
#$inputFile = "D:\sample\test2.txt"

# utf-8のときはこちら
#$text=[System.IO.File]::ReadAllText($inputFile)

# Shift_JISの時はこちら
$text=[System.IO.File]::ReadAllText($inputFile,[System.Text.Encoding]::GetEncoding("shift_jis"))
# 対象文字列を空白に置き換えて、置き換え前の長さから引き算で導出
($text.Length - $text.Replace($findChar,"").Length)/$findChar.Length

実行結果

PS D:\sample> .\mojicount.ps1 D:\sample\test2.txt
4
PS D:\sample>

スポンサーリンク
コピペで使う