使用 Windows PowerShell 根据部分字符串匹配删除文本文件中的整行

25 windows-7 script powershell

所以我有几个大文本文件需要整理,并删除所有出现的包含给定关键字的行。所以基本上,如果我有这些行:

这不是测试
这是测试
可能是测试
绝对不是测试

我用“not”运行脚本,我需要完全删除第 1 行和第 4 行。

我一直在尝试:

PS C:\Users\Admin> (Get-Content "D:\Logs\co2.txt") | 
Foreach-Object {$_ -replace "3*Program*", ""} | 
Set-Content "D:\Logs\co2.txt"
Run Code Online (Sandbox Code Playgroud)

但它只替换“程序”而不是整行。

but*_*oxa 29

这是我会做的:

Get-Content .\in.txt | Where-Object {$_ -notmatch 'not'} | Set-Content out.txt
Run Code Online (Sandbox Code Playgroud)

Snark 的代码行也是如此,但它首先将所有文件加载到一个数组中,这对于大文件的内存来说可能是有问题的。


Sna*_*ark 8

这将起作用:

(Get-Content "D:\Logs\co2.txt") -notmatch "not" | Out-File "D:\Logs\co2.txt"
Run Code Online (Sandbox Code Playgroud)

  • 同意,但我使用了与原始海报相同的文件名,以使答案更容易。他将 co2.txt 用于输入和输出。 (3认同)
  • 永远不会覆盖原始文件! (2认同)