2017-09-18 4 views
0

ブックマークやその他のNotepad ++機能でこれを行うことはできますが、これを頻繁に行い、ドキュメントを編集します。私は以下のpowershellを使用して、特定の文字列を含む行以外のすべての行を削除しましたが、50文字列の場合はどうすればよいでしょうか。Powershell特定の文字列を含む行を除くすべての行を削除します。

$SourceFile = 'C:\PATH\TO\FILE.csv' 
$Pattern = 'word||' 

(Get-Content $SourceFile) | % {if ($_ -match $Pattern){$_}} | Set-Content $SourceFile 
+1

あなたはこのように、あなたのパターンで複数のキーワードを指定することができます。 –

+0

明確にするために、私がこれを実行するたびに、csvをレビューした後に定義された一連の文字列があります。私は '$ Pattern1'を' $ Pattern50'に複製したり、文字列をtxtファイルにリストアップして使用することができればと期待していました。これは可能ですか? – physlexic

+0

@JasonSnell ok私はそれを試してみる – physlexic

答えて

1

私は$Matchはあなたの例では$Patternべきであると思います。あなたは、いくつかの文字列を持っている場合は最良の方法は、上記のコードを使用している文字列の配列を配列とループにそれらを配置することです

$SourceFile = 'C:\PATH\TO\FILE.csv' 
$Pattern = 'word|excel|powerpoint' 

(Get-Content $SourceFile) | Where-Object { $_ -match $Pattern } | Set-Content $SourceFile 
+0

ええ、私は一種の急いでいました。私はこれを試してみます – physlexic

+0

愚かな質問、文字列に '|'シンボルが含まれていればどうなりますか?すなわち、 'word |' – physlexic

+1

@physlexic [この質問を参照](https://stackoverflow.com/questions/34231674/unable-to-escape-pipe-character-in-powershell)(パイプ文字をエスケープするためにバックスラッシュを使用する) – sodawillow

関連する問題