powershell を使用して、一連のファイルで特定の文字列パターンのない行を見つけて削除する方法を見つけようとしています。たとえば、次のテキスト ファイルがあります。
111111
22x222
333333
44x444
これを次のように変換する必要があります。
22x222
44x444
'x' の文字列パターンが他のどの行にもない場合。
一連のテキスト ファイルを処理するために、powershell でこのようなコマンドを発行するにはどうすればよいですか?
ありがとう。
powershell を使用して、一連のファイルで特定の文字列パターンのない行を見つけて削除する方法を見つけようとしています。たとえば、次のテキスト ファイルがあります。
111111
22x222
333333
44x444
これを次のように変換する必要があります。
22x222
44x444
'x' の文字列パターンが他のどの行にもない場合。
一連のテキスト ファイルを処理するために、powershell でこのようなコマンドを発行するにはどうすればよいですか?
ありがとう。
dir | foreach { $out = cat $_ | select-string x; $out | set-content $_ }
このdirコマンドは、現在のディレクトリ内のファイルを一覧表示します。foreach各ファイルを通過します。catファイルとパイプを読み込みますselect-string。select-string特定のパターン (この場合は "x") を含む行を検索します。の結果select-stringは に格納され$outます。最後に、$outと同じファイルに書き込まれますset-content。
$out同じファイルを同時に読み書きすることはできないため、一時変数が必要です。
これにより、作業ディレクトリのすべての txt ファイルが処理されます。各ファイルの内容がチェックされ、「x」が含まれる行のみが渡されます。結果はファイルに書き戻されます。
Get-ChildItem *.txt | ForEach-Object{
$content = Get-Content $_.FullName | Where-Object {$_ -match 'x'}
$content | Out-File $_.FullName
}