2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

catだけじゃない!PowerShellでファイル中身を見る6つの方法

Last updated at Posted at 2025-05-08

はじめに

LinuxやmacOSユーザーにとって、ファイ中身をみるときにcatコマンドをよく使うと思います。PowerShellを使っている方にとって、「ファイルの中身を見るコマンドといえば?」と聞かれて即答できますか?

実はPowerShellには、単にファイルの内容を表示するだけでなく、より高度な操作や柔軟な表示方法が豊富に用意されています。この記事では、PowerShellでファイルの中身を確認するための6つの方法を紹介します。日常の作業効率を上げるために、ぜひ活用してください!

powershell-methods-diagram (2).png

1. Get-Content の基本的な使い方

PowerShellで最も一般的なファイル内容表示コマンドは Get-Content です。Linuxの cat に相当するこのコマンドレットを使うと、ファイルの内容を簡単に表示できます。

# 基本的な使い方
Get-Content -Path "C:\temp\example.txt"

# エイリアスを使った短い書き方
gc "C:\temp\example.txt"

# パイプラインと組み合わせた使い方
"C:\temp\example.txt" | Get-Content

Get-Content は単なるファイル表示以上の機能があります。例えば、複数のファイルを一度に表示することも可能です。

# 複数のファイルを一度に表示
Get-Content -Path "file1.txt", "file2.txt"

# ワイルドカードを使った複数ファイルの表示
Get-Content -Path "C:\temp\*.log"

2. -Tail-TotalCount オプションで必要な部分だけ表示

大きなファイルを扱う場合、全ての内容を表示する必要がないことがあります。PowerShellでは、ファイルの先頭や末尾だけを表示するオプションが用意されています。

# ファイルの先頭10行だけを表示
Get-Content -Path "large_log.txt" -TotalCount 10

# ファイルの末尾5行だけを表示
Get-Content -Path "large_log.txt" -Tail 5

これらのオプションは、ログファイルの確認など、大量のテキストから必要な情報だけを素早く抽出したい場合に非常に便利です。

3. -Wait オプションでリアルタイム監視

アプリケーションのログファイルなど、リアルタイムに更新されるファイルを監視したいケースがあります。そんな時は -Wait オプションが役立ちます。Linuxの tail -f に相当するこの機能を使うと、ファイルの更新をリアルタイムで追跡できます。

# ファイルの更新をリアルタイムで監視
Get-Content -Path "application.log" -Wait

# 末尾10行から表示して、その後の更新を監視
Get-Content -Path "application.log" -Tail 10 -Wait

このコマンドを実行すると、新しい行がファイルに追加されるたびに、PowerShellウィンドウに表示されます。監視を終了するには、Ctrl+Cを押してください。

4. Select-String で検索しながら表示

大きなファイルから特定のパターンを含む行だけを抽出したい場合は、Select-String コマンドレットとの組み合わせが便利です。これはLinuxの grep に相当する機能です。

# 「error」という単語を含む行のみを表示
Get-Content -Path "application.log" | Select-String -Pattern "error"

# 大文字/小文字を区別せずに検索
Get-Content -Path "application.log" | Select-String -Pattern "ERROR" -CaseSensitive:$false

# 正規表現を使った検索
Get-Content -Path "application.log" | Select-String -Pattern "\d{4}-\d{2}-\d{2}"  # 日付形式(YYYY-MM-DD)を検索

さらに、Select-String はコンテキスト行(マッチした行の前後の行)も表示できます:

# マッチした行の前後2行も表示
Get-Content -Path "application.log" | Select-String -Pattern "error" -Context 2,2

5. Out-FileOut-Host との組み合わせ

ファイルの内容を変換や加工して表示したい場合、他のコマンドレットと組み合わせることができます。

# 内容を別のファイルに保存
Get-Content -Path "source.txt" | Out-File -FilePath "destination.txt"

# 画面表示をカスタマイズ(1ページずつ表示)
Get-Content -Path "large_file.txt" | Out-Host -Paging

また、Format-TableConvertTo-Html などと組み合わせて、表示形式を変更することも可能です:

# CSVファイルを表形式で表示
Get-Content -Path "data.csv" | ConvertFrom-Csv | Format-Table

# テキストファイルをHTML形式に変換して表示
Get-Content -Path "readme.txt" | ConvertTo-Html | Out-File -FilePath "readme.html"

6. .NET クラスを使った高度な読み取り

PowerShellは.NETフレームワークの機能を直接利用できるため、より高度なファイル操作が必要な場合は、System.IO.File クラスなどを活用できます。これにより、エンコーディングの指定や、バイナリファイルの読み取りなど、より細かい制御が可能になります。

# エンコーディングを指定してファイルを読み込む
[System.IO.File]::ReadAllText("C:\temp\japanese.txt", [System.Text.Encoding]::GetEncoding("shift_jis"))

# ファイルをバイト配列として読み込む
$bytes = [System.IO.File]::ReadAllBytes("C:\temp\binary.dat")
$bytes[0..16]  # 最初の16バイトを表示

# 行単位で読み込む
$lines = [System.IO.File]::ReadAllLines("C:\temp\multiline.txt")
$lines.Count  # 行数を表示

さらに、ストリームを使った効率的な読み取りも可能です:

# StreamReaderを使った大きなファイルの効率的な読み取り
$reader = [System.IO.StreamReader]::new("C:\temp\very_large.txt")
$lineCount = 0

while (($line = $reader.ReadLine()) -ne $null) {
    $lineCount++
    # 必要な処理をここに書く
}

$reader.Close()
Write-Host "Total lines: $lineCount"

まとめ

マインドマップ (45).png

PowerShellでファイルの内容を表示する方法は、基本的な Get-Content の使用から、.NETクラスを活用した高度な読み取りまで多岐にわたります。今回紹介した6つの方法をマスターすれば、さまざまな状況に適したファイル読み取りが可能になります。

  1. Get-Content の基本的な使い方
  2. -Tail-TotalCount オプションで必要な部分だけ表示
  3. -Wait オプションでリアルタイム監視
  4. Select-String で検索しながら表示
  5. Out-FileOut-Host との組み合わせ
  6. .NET クラスを使った高度な読み取り

これらの方法を状況に応じて使い分けることで、PowerShellでのファイル操作がより効率的になるでしょう。

最後に、PowerShellの公式ドキュメントも参考になりますので、さらに詳しく知りたい方はチェックしてみてください。

補足:PowerShellにおける cat について

PowerShellでも cat コマンドは使用できますが、UNIXやLinuxにおける cat とは異なり、PowerShellでは Get-Content のエイリアスです。つまり、実体は Get-Content であり、動作も PowerShellのオブジェクト指向に基づいています。

# これらはすべて同じ動作
Get-Content -Path "C:\temp\example.txt"
gc "C:\temp\example.txt"
cat "C:\temp\example.txt"

参考リンク

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?