0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PowerShellで巨大なログファイルの先頭や最終行からn行を確認したいとき

Posted at

PowerShellで大きなログファイルの一部(先頭や最終行など)を参照する際に。

先頭だったり最終行付近を確認したい事あるかと思います。

何も意識しないでコマンドを実行したりすると意外と処理時間を食う結果になるので紹介。

先頭から

Get-Contentのオプションを利用すればOK

# Get-Contentでは先頭行から指定行読み込むTotalCountオプションが用意されている
Get-Content -TotalCount 10 -Path .\hugelog.txt

# エイリアスとしてFirstやHeadも用意されている
Get-Content -First 10 -Path .\hugelog.txt
Get-Content -Head 10 -Path .\hugelog.txt

# Slect-Objectに渡して、Select-Object側のFirstオプションでも先頭か指定行取得できる
Get-Content -Path .\hugelog.txt | Select-Object -First 10

最終行から

こちらもGet-Contentのオプションを利用すればOK

# Get-Contentには末尾から指定行読み込みオプションとしてTailオプションが用意されている
Get-Content -Tail 10 -Path .\hugelog.txt

# エイリアスとしてLastも用意されている
Get-Content -Last 10 -Path .\hugelog.txt

Get-Content foobar | Select-Object -Last n とすると時間がかかる

先頭行からの所と同様にSelect-Objectに渡してLastオプションで表示しようとすると非常に時間がかかります。

# Select-Object側のLastオプションでも表示できるが、これは遅い
Get-Content -Path .\hugelog.txt | Select-Object -Last 10

これはGet-Contenctの部分で先頭からファイルを読んでいってしまっているので、結局の所Select-Object -Last 10の部分はファイル全体を読みこんだ後に実行されるからだと思います。

総評

いつの間にか当たり前のように利用していましたが、知らないとだいぶ不便な気がします。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?