MiracleJobLogo
エンジニアのエンジニアによるエンジニアのためのサイト
News 07/19 おすすめ情報に 『 【資格取得者速報】 Aさん 「 Microsoft Security, Compliance, and Identity Fundamentals」 』 を追加しました。
会員登録するとキャリア診断やサイトに参加することができます。
あなたにおすすめな技術情報、資格、仕事などをお知らせします。

無料会員登録


パスワードを忘れた場合
LINEで送る
MiracleJobBanaLeft1
MiracleJobBanaLeft2


【PowerShell】大容量テキストファイル分割_その2
profile-img
投稿者: muto-sanさん
投稿日:2019/10/23 13:56
更新日:2019/10/23 13:58
like-img
分類
技術
テクノロジー
Windows系サーバ
キャリア
運用・保守 / 構築
投稿内容
前回の投稿では単純に行数でファイル分割について書きましたが、今回は少し応用を。
例えば、このような記述内容のログファイル(LogFile.txt)があったとします。
※ 内容はランダムに記述したデタラメです。




ワンライナーで書くとこんな感じ。
=======================
$time = 0..23 | % {$_.ToString("00")} ; foreach ($i in $time){Get-Content ".\LogFile.txt" | select -First 1 | Out-File ".\LogFile_$i.txt"; Get-Content ".\LogFile.txt" | ? {$_ -match "^2019-10-15 $i"} | Out-File ".\LogFile_$i.txt" -Append}
=======================

少し読み取りやすく直してみます
=======================
$time = 0..23 | % {$_.ToString("00")}  # "00"から"23"の文字列の配列を作成

foreach ($i in $time){  # $i変数を00から23で繰り返し実行
  Get-Content ".\LogFile.txt" | 
    Select-Object -First 1 | # ヘッダー行を取得
    Out-File ".\LogFile_$i.txt" # LogFile_HH.txtファイルにヘッダーを書き込み

  Get-Content ".\LogFile.txt" |
    Where-Object {$_ -match "^2019-10-15 $i"} | # 特定時間の行を取得
    Out-File ".\LogFile_$i.txt" -Append # LogFile_HHファイルに書き込み
}
=======================





これで時間毎のファイルが出来ました。
例えば[LogFile_14.txt]を開くと14時台の行だけが記録されています。




大容量ログファイルを調査する必要がある時もだいたいの場合、ほとんどは必要のないデータになってしまうのでこういう工夫が出来ると作業が捗ります。


コメント


MiracleJobBanaRight1
MiracleJobBanaRight2
MiracleJobBanaRight3