Powershell 查找和删除文本文件中没有字符串模式的行
我试图了解如何使用powershell查找和删除一组文件中没有特定字符串模式的行。例如,我有以下文本文件:Powershell 查找和删除文本文件中没有字符串模式的行,powershell,Powershell,我试图了解如何使用powershell查找和删除一组文件中没有特定字符串模式的行。例如,我有以下文本文件: 111111 22x222 333333 44x444 这需要转化为: 22x222 44x444 假设“x”的字符串模式不在任何其他行中 如何在powershell中发出这样的命令来处理一堆文本文件 谢谢 dir | foreach { $out = cat $_ | select-string x; $out | set-content $_ } dir命令列出当前目录中的文件;f
111111
22x222
333333
44x444
这需要转化为:
22x222
44x444
假设“x”的字符串模式不在任何其他行中
如何在powershell中发出这样的命令来处理一堆文本文件
谢谢
dir | foreach { $out = cat $_ | select-string x; $out | set-content $_ }
dir
命令列出当前目录中的文件;foreach
遍历每个文件cat
读取文件并将其导入选择字符串
<代码>选择字符串查找包含特定图案的行,在本例中为“x”;选择字符串的结果存储在$out
中;最后,$out
与设置内容
一起写入同一个文件
我们需要临时变量$out
,因为您不能同时读取和写入同一文件。这将处理工作目录中的所有txt文件。检查每个文件内容,并且只允许其中包含“x”的行传递。结果将写回文件
Get-ChildItem *.txt | ForEach-Object{
$content = Get-Content $_.FullName | Where-Object {$_ -match 'x'}
$content | Out-File $_.FullName
}
某些行前的空格是故意的吗?如果我需要处理“x”或“y”或“z”怎么办?我如何形成选择字符串以将所有这些作为“或”?@Niner它是一个正则表达式,因此您可以执行select string“x | y | z”
。要了解更多信息,请查看。