こんにちわ。ますのです。
先日よりWindowsOSのログデータを扱ってプロキシサーバやファイヤウォールのログを見る機会が増えております。
Linuxではgrepコマンドで抽出したい文字列を1行ごと引っ張ってきてくれるのでやりやすいなぁ。。。と思って、わざわざLinuxで確認しようという無駄なことを考えた次第です。
PowerShellでも出来ないかなぁと調べたら、あるものですね。
何度も調べて引っ張り出してくるのが面倒なので備忘で残します。
指定した文字列の行を切り出し:PowerShellコマンド「Select-String」を使う
こんな感じのデータを用意しました
PS > cat c:\test\test.log
A00123456489
B00216548932
C01564231320
D19321634562
PS > Select-String "00" c:\test\test.log
test.log:1:A00123456489
test.log:2:B00216548932
※↓も同じ結果返ってきますのでどちらでもおけ
PS > Select-String "c:\test\test.log" -Pattern "00"
00が含まれる2行が抽出されたであります。
こんな感じで別途テキストでログ抽出して使っていました。
Select-String “00” c:\test\test.log > 00-test.log
こんな感じで別途テキストでログ抽出して使っていました。
Select-String “00” c:\test\test.log > 00-test.log
「or」「and」「not」などの条件でも抽出可能
他にも検索として色々出来るようで。わりかし便利に使えそうです。
OR検索
PS > Select-String "c:\test\test.log" -Pattern "A0","D"
test.log:1:A00123456489
test.log:4:D19321634562
AND検索
PS > Select-String "c:\test\test.log" -Pattern "0" | Select-String "C"
test.log:3:C01564231320
NOT検索
PS > Select-String -Path "c:\test\test.log" -NotMatch -Pattern "00"
test.log:3:C01564231320
test.log:4:D19321634562
余談ですが・・・
もし出力した内容が折り返して困っちゃうわぁって時はPowerShellの幅をプロパティで変えると幸せになれるかもです。
Linux使うことに慣れていない社内SEのわたしとしてはWindowsで完結できるのはうれしい限りです。
わりとPowerShellって使い勝手が良いのだなぁと感じる今日この頃であります。
わりとPowerShellって使い勝手が良いのだなぁと感じる今日この頃であります。