Just another IT site ※IT系の記事は当方環境での実施内容となるため実施する場合は自己責任でお願いいたします。At Your Own Risk!! TURN BACK WHILE YOU CAN
PR

【Ask_AI】powershellでキーワードマッチした行とその下の行を出力する

※IT系の記事は当方環境での実施内容となるため実施する場合は自己責任でお願いいたします。スクリプトはAI生成のものも多いのでコピー&ペーストの際は文字コードに注意ください!

【AIによる回答】

PowerShellで、特定のキーワードにマッチした行とその直後の行を出力するには、Select-String コマンドレットの -Context パラメータを使用するのが最も簡単で効率的です。
基本コマンド
powershell
Select-String -Path "ファイルパス" -Pattern "検索キーワード" -Context 0,1
  • -Context 0,1: マッチした行の前(Before)に0行、後ろ(After)に1行を表示するという指定です。
    ITmedia +1
具体的な使用例
test.log というファイルから “ERROR” というキーワードを含む行と、その次の行を表示する場合:
powershell
Select-String -Path "C:\path\to\test.log" -Pattern "ERROR" -Context 0,1
結果の見方
出力は以下のようになり、マッチした行には > マークが付きます。
text
  test.log:10: 通常の行
> test.log:11: ERROR: 文字列がマッチ
  test.log:12: マッチした行の次の行
マッチした内容だけをきれいに表示する
上のコマンドのままだと行番号などが含まれます。マッチしたテキストのみを抽出したい場合は、以下のようにパイプラインで Select-Object を使い、Context プロパティを書き出します。
powershell
Select-String -Path "test.log" -Pattern "ERROR" -Context 0,1 | Foreach-Object {
    $_.Line        # マッチした行
    $_.Context.PostContext # 下の行
}
応用:ファイル内の検索ではなくコマンド結果に対して行う場合
コマンドの結果(例:dir)に対してパイプラインで渡すことも可能です。
powershell
dir | Select-String -Pattern "マッチキーワード" -Context 0,1
タイトルとURLをコピーしました