我正在尝试找出如何使用powershell来查找和删除一行文件中没有特定字符串模式的行。例如,我有以下文本文件:
111111
22x222
333333
44x444
这需要变成:
22x222
44x444
假设'x'的字符串模式不在任何其他行中。
如何在powershell中发出这样的命令来处理一堆文本文件?
感谢。
答案 0 :(得分:3)
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
,因为您无法同时读取和写入同一文件。
答案 1 :(得分:2)
这将处理工作目录中的所有txt文件。检查每个文件内容,并且只允许传递其中包含“x”的行。结果将写回文件。
Get-ChildItem *.txt | ForEach-Object{
$content = Get-Content $_.FullName | Where-Object {$_ -match 'x'}
$content | Out-File $_.FullName
}