TSUBOCK★LABO-ツボックラボ-

とあるセキュリティエンジニアの技術メモブログ

MENU

Windowsでも`tail -f`や`grep`がしたい!それ、PowerShellでも実現できますよ。

f:id:panda-loves-smile:20200204162932p:plain

Linux上でログファイルを追記状況を確認するときに、リアルタイムに表示を行うことができるtail -fですが、Windowsではtailコマンドがないので、リアルタイムにログの追記状況とかを確認できなくて、困っていませんか?

WSLでBash使えればtailが使えるんですが・・・WSLを入れられない環境では詰みますね。でもPowerShellのGet-Contentコマンドレットを使うとtail -f相当のことができます。

使い方

PS> Get-Content -Path {ファイルパス} -Wait -Tail {行数}

上記のように指定してください。

例えば、C:\work\sample.logというファイルを監視したいときは

PS> Get-Content -Path C:\work\sample.log -Wait -Tail 5

と実行すると5行ずつファイルの中身を取得することができます。

tail -fだけじゃなくて絞り込みもしたい

tail -f だけじゃなくて、grepも使って絞り込みすることよくあると思いますが、絞り込みはSelect-Stringというコマンドレットで実現することができます。

PS> Select-String {キーワード}

grep-eオプションのように複数キーワードをOR条件で指定したい場合はカンマ区切りにすればOKです。

PS> Select-String {キーワード1},{キーワード2}

また-Patternオプションを使うことで正規表現を使うことも可能です。

PS> Select-String -Pattern {キーワード}

先に出ているGet-Contentと組み合わせる場合はパイプ(|)でつなげてください。 最初にGet-Contentを行った後、Select-Stringを後ろにつなげるとLinuxでいうtail -f hoge | grep hugaみたいな状態になります。

PS> Get-Content -Path C:\work\sample.log -Wait -Tail 5 | Select-String {キーワード}