閑古鳥

オールドプログラマの日記。プログラミングとか病気(透析)の話とか。

PowerShellで単語の出現数を数えたい

PowerShellで文字列の配列を走査して、それぞれの文字列(単語)の出現数を数える、というのをやりたかったのですが、やり方が見つからなかったのでスクリプトを書きました。

# count.ps1
$count = @{}
foreach($x in $input) {
  if (!$count.ContainsKey($x)) {
  	 $count[$x] = 1
  }
  else {
  	 ++$count[$x]
  }
}

$count.GetEnumerator() | sort Value -descending | foreach {
#  Write-Host $({"{0}:{1}" -F $_.name, $_.value})
  echo ([String]::Format("{0}:{1}",  $_.value, $_.name))
}

以下のように使います。

# 入力
@("aa","bb","aa","bb","cc","dd","aa","cc") | count.ps1

# 出力
3:aa
2:cc
2:bb
1:dd