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 {キーワード}