Windows 使用powershell查找.txt文件中出现次数最多的字符串
我目前正在powershell中完成一项学校作业,我必须在txt文件中显示超过6个字符的单词,出现次数最多。我尝试了这段代码,但它返回了每个单词的出现次数,这不是我需要做的。请帮忙Windows 使用powershell查找.txt文件中出现次数最多的字符串,windows,powershell,count,scripting,Windows,Powershell,Count,Scripting,我目前正在powershell中完成一项学校作业,我必须在txt文件中显示超过6个字符的单词,出现次数最多。我尝试了这段代码,但它返回了每个单词的出现次数,这不是我需要做的。请帮忙 $a= Get-Content -Path .\germinal_split.txt foreach($object in $a) { if($object.length -gt 6){ $object| group-object | sort-object -Property "Count" -Descendin
$a= Get-Content -Path .\germinal_split.txt
foreach($object in $a)
{
if($object.length -gt 6){
$object| group-object | sort-object -Property "Count" -Descending | ft -Property ("Name", "Count");
}
}
您可以执行以下操作:
$a = Get-Content -Path .\germinal_split.txt
$a | Where Length -gt 6 | Group-Object -NoElement | Sort-Object Count -Descending
说明:
其中
指定长度
属性的条件Group Object-NoElement
去掉包含实际对象数据的Group
属性<代码>排序对象默认情况下按升序对分组输出进行排序。这里,Count
属性被指定为排序属性,-降序
参数反转默认排序顺序。从问题中我们不知道文本文件中有什么。到目前为止,只有在每行只有一个单词的情况下,这些方法才会起作用。我认为下面这样的方法无论如何都会奏效:
$Content = (Get-Content 'C:\temp\test12-01-19' -raw) -Split "\b"
$content |
Where-Object{$_.Length -ge 6} |
Group-Object -Property Length -NoElement | Sort-Object count | Format-Table -AutoSize
在这里,我使用-Raw参数以单个字符串的形式读取文件。然后我在单词边界上分裂。仍然使用Where筛选出少于6个字符的单词。现在对length属性使用Group Object,如其他示例所示
我不经常使用boundary RegEx这个词。我担心标点符号可能有点奇怪,但我的测试看起来不错
让我知道您的想法。如果要使用
组对象
,则无需迭代列表。只需使用$a |组对象