前回に続いて文字数をカウントするコマンドです。前回はUNIX系でしたが、今回はPowerShellを使います。PowerShellと言えばWindowsがメインですが、PowerShell Core登場以降はLinuxやmacOSでも動作します。と言っても完全に同じように動作するわけではありません。今回のような文字数をカウントするといった簡単なものであればWindows PowerShellでもPowerShell Coreでも同じように動作します。今回はPowerShell Coreをベースとして説明していきます。
macOS/LinuxでPowerShellをインストールしてみたいという人は以下のマイクロソフトの公式ページを参照してみてください。

https://learn.microsoft.com/ja-jp/powershell/scripting/install/installing-powershell?view=powershell-7.2

今回もこれまでのようにサンプルで利用するファイル・ディレクトリはデスクトップのsampleディレクトリとしています。デスクトップにsampleディレクトリがない場合は作成しておいてください(コマンド入力ならmkdir ~/Desktop/sampleとして作成することができます)。
また、カレントディレクトリも上記の場所になります。cd ~/Desktop/sampleのようにコマンドを入力してカレントディレクトリを変更しておけばよいでしょう。

PowerShellで行数カウント

 今度はPowerShellで行数をカウントしてみましょう。PowerShellの場合はいくつか方法があります。まず、ファイル(オブジェクト)に対してLengthプロパティを使う方法です。
 カレントディレクトリにある1.txtの行数を表示するには以下のように指定します。

(Get-Content 1.txt).Length

ちなみにGet-Contentはエイリアスとしてcatが設定されているので以下のようにしても同じ結果になります。

(cat 1.txt).Length

PowerShellにはLengthプロパティ以外にCountプロパティもあります。以下のようにしても行数が出力されます。空白行もカウントされます。後述するMeasure-Objectの場合、空白行をカウントしないのでLength,Countを使った場合と結果が異なる場合がある点には注意が必要です。

(Get-Content 1.txt). Count

 Measure-Objectの説明は次に行うとして実際の実行結果を確認してみましょう。なお、比較するテキストファイルの内容は以下のようになっています。

 実際にMeasure-Objectを使った行数カウントは以下のようになります。Measure-Objectでは複数の空行はまとめられて1行としてカウントされているのがわかります。

Get-Content ./1.txt | Measure-Object -Line
Get-Content ./1n.txt | Measure-Object -Line

より詳細に文字数などを調べる

 Length、Countでは行数しか求めることができません。文字数・単語数なども求めたい場合にはMeasure-Objectを使います(すでに使ってしまいましたが)。これがUNIX系でのwcに該当するようなものだと思ってよいでしょう。
 PowerShellでは、Measure-Objectを使うことでUNIX系のwcと似たような結果を求める事ができます。
 まず、先ほどと同様に指定したファイルの行数を求めてみます。この場合、Measure-Objectのオプションに-Lineを指定します。
 以下のようにすると1.txtファイルの行数が表示されます。

Get-Content ./1.txt | Measure-Object -Line

 文字数を求めたい場合はオプションに-Characterを指定します。

Get-Content ./1.txt | Measure-Object -Character 

 単語の数であれば-Wordを指定します。

Get-Content ./1.txt | Measure-Object -Word

Measure-Objectのエイリアスを作成する

この記事は
Members+会員の方のみ御覧いただけます

ログイン/無料会員登録

会員サービスの詳細はこちら