PowerShellで特定文字列を含む行を削除する方法|空行だけ削除する方法も解説

目次

スポンサードリンク

PowerShellで特定の文字列を含むといった条件に合致する行だけを削除する方法を解説します。

特定の文字列を含む行を削除するコマンド

下記コマンドは、sample.txt というテキストファイルから、削除対象として指定した文字列を含む行だけを削除した結果を表示します。

Get-Content "sample.txt" | Where-Object { $_ -notmatch "<削除対象の文字列>" } 

検証用にファイルを用意しました。この中から、削除という文字を含む行だけを除外した結果を表示しています。

PS C:\Users\username> cat .\sample.txt
これはテストファイルです。
これはテストファイルです。
削除対象の行です。
これはテストファイルです。
これはテストファイルです。
削除対象の行です。
これはテストファイルです。
これはテストファイルです。
PS C:\Users\username>
PS C:\Users\username> Get-Content "sample.txt" | Where-Object { $_ -notmatch "削除" }
これはテストファイルです。
これはテストファイルです。
これはテストファイルです。
これはテストファイルです。
これはテストファイルです。
これはテストファイルです。

削除した結果をファイルに上書き保存する方法

下記コマンドは、Get-Contentコマンドでsample.txtの内容を取得し、Where-Objectコマンドで「削除」という文字を含む行だけを削除し、その結果を、Set-Contentコマンドでsample.txtに保存しています。

Get-Content "sample.txt" | Where-Object { $_ -notmatch "削除" } | Set-Content "sample.txt"

空行だけを削除する方法

よく利用する例ですが、ファイルの中から空行だけを削除する際などで利用できます。

Get-Content "sample.txt" | Where-Object { $_.Trim() -ne "" } | Set-Content "sample.txt"

まとめ

PowerShellでは、一時ファイルを使わずに直接ファイルを加工・上書き保存できるのが特徴です。行の削除はログ整理など様々なシーンで利用できるテクニックです。


PowerShellの基礎を一通り学べるおすすめ書籍
Windows環境で開発やシステム管理を行うエンジニアにとって、PowerShellの知識は非常に重要なスキルセットです。こちらの書籍はサンプルも豊富で手元に置いておきたい一冊です。

コマンドプロンプトのポケットリファレンス:Windows11対応版