Ubuntu に PowerShell をインストール

Ubuntu 22.04 LTS へは、Microsoft の Webサイト記事先頭にある sh コマンド群(sudo apt-get updateからはじまる)をそのまま流せばインストールでき、実行開始できます。

Windows 版の PowerShell では、実行ポリシーを設定する必要がありました。セキュリティの関係でスクリプトファイルの実行がデフォルト(初期状態)では許可されていないためです。

Linux 版では特に制限がなされていませんでした(Unrestricted)。

Get-ExecutionPolicy

次回からは、Terminal で pwsh と叩くだけです。

pwsh

こちらの記事で作成したスクリプトを Ubuntu 上で実行してみたのですが、Sort のところでエラーが発生しました。Sort-Object に書き換えることで動作するようになったので、修正版を書いておきます。

$rows = Import-Csv ".\【年別】総人口(総数)_me-el.csv" -Encoding UTF8

$prefs = @{}

foreach ($row in $rows) {
    $year = $row.""
    $row | Get-Member | ? { $_.MemberType -eq "NoteProperty" } | % {
        $key = $_.Name
        if ($key -ne "") {
            $val = $row."$key"
            $p = $null
            if (!$prefs.ContainsKey($key)) {
                $p = [PSCustomObject]@{
                    pref      = $key;
                    maxValue  = [long]0;
                    maxYear   = "";
                    lastValue = [long]0;
                    lastYear  = "";
                    ratio     = 0;
                }
                $prefs[$key] = $p
            } else {
                $p = $prefs[$key]
            }

            if ($p.maxValue -lt [long]$val) {
                $p.maxValue = [long]$val
                $p.maxYear = $year
            }

            # 最終の人口と最終年
            $p.lastValue = [long]$val
            $p.lastYear = $year

        }
    }
}

$prefs.Values | % { 
    $_.ratio = [Math]::Round($_.lastValue * 100 / $_.maxValue, 2).ToString("000.00")
}
$prefs.Values | Select ratio, maxYear, maxValue, lastYear, lastValue, pref | Sort-Object ratio -Descending | `
    Export-Csv ".\result.txt" -Delimiter "`t" -Encoding UTF8 -NoTypeInformation