2

powershell を使用して、一連のファイルで特定の文字列パターンのない行を見つけて削除する方法を見つけようとしています。たとえば、次のテキスト ファイルがあります。

111111
22x222
333333
44x444

これを次のように変換する必要があります。

22x222
44x444

'x' の文字列パターンが他のどの行にもない場合。

一連のテキスト ファイルを処理するために、powershell でこのようなコマンドを発行するにはどうすればよいですか?

ありがとう。

4

2 に答える 2

3
dir | foreach { $out = cat $_ | select-string x; $out | set-content $_  }

このdirコマンドは、現在のディレクトリ内のファイルを一覧表示します。foreach各ファイルを通過します。catファイルとパイプを読み込みますselect-stringselect-string特定のパターン (この場合は "x") を含む行を検索します。の結果select-stringは に格納され$outます。最後に、$outと同じファイルに書き込まれますset-content

$out同じファイルを同時に読み書きすることはできないため、一時変数が必要です。

于 2013-09-14T03:48:03.020 に答える
2

これにより、作業ディレクトリのすべての txt ファイルが処理されます。各ファイルの内容がチェックされ、「x」が含まれる行のみが渡されます。結果はファイルに書き戻されます。

Get-ChildItem *.txt | ForEach-Object{
    $content = Get-Content $_.FullName | Where-Object {$_ -match 'x'}
    $content | Out-File $_.FullName
}
于 2013-09-14T09:59:29.097 に答える