Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 使用powershell查找.txt文件中出现次数最多的字符串_Windows_Powershell_Count_Scripting - Fatal编程技术网

Windows 使用powershell查找.txt文件中出现次数最多的字符串

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

我目前正在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" -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 |组对象