查找和删除文本文件中没有字符串模式的行

时间:2013-09-14 03:05:45

标签: powershell

我正在尝试找出如何使用powershell来查找和删除一行文件中没有特定字符串模式的行。例如,我有以下文本文件:

111111
22x222
333333
44x444

这需要变成:

22x222
44x444

假设'x'的字符串模式不在任何其他行中。

如何在powershell中发出这样的命令来处理一堆文本文件?

感谢。

2 个答案:

答案 0 :(得分:3)

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

dir命令列出当前目录中的文件; foreach遍历每个文件; cat将文件和管道读入select-string; select-string找到包含特定模式的行,在本例中为“x”; select-string的结果存储在$out;最后,$outset-content写入同一文件。

我们需要临时变量$out,因为您无法同时读取和写入同一文件。

答案 1 :(得分:2)

这将处理工作目录中的所有txt文件。检查每个文件内容,并且只允许传递其中包含“x”的行。结果将写回文件。

Get-ChildItem *.txt | ForEach-Object{
    $content = Get-Content $_.FullName | Where-Object {$_ -match 'x'}
    $content | Out-File $_.FullName
}