如果前6个字符不同,如何计算行?

时间:2016-12-10 10:50:14

标签: arrays powershell count lines

我有一个这样的txt文件:

ksakks ...... ......
ksakks ...... ......
ksakks ...... ......
ksakks ...... ......
ksakks ...... ......
ksakks ...... ......
bccscd ...... ......
bccscd ...... ......
bccscd ...... ......
bccscd ...... ......
...

我必须统计线条。例如:ksakks有6行,bccscd只有4行。如果其中一些少于3,那么我必须保存他们的“名称”,如果有更多,那么我必须将他们的“名字”保存在一个数组中。

我该怎么做?

3 个答案:

答案 0 :(得分:3)

您可以使用Select-Sting提取文字,然后使用Group-Object进行计数。像这样:

(Select-String .\yourfile.txt -Pattern '^.{6}' ).Matches | Select -ExpandProperty value | Group-Object | Select Name, Count

答案 1 :(得分:1)

要获得计数,请使用以下内容:

Get-Content "E:\Source_Test\file.txt"|Group-Object {$PSItem.Substring(0,6)} -NoElement

我使用您的数据创建了一个示例文件,并且它已正确显示。以下是供您参考的屏幕截图。

<强>输出:

enter image description here

文字档案

enter image description here

希望有所帮助

答案 2 :(得分:0)

试试这个

$result = get-content C:\temp\result.txt | 
                             group { $_.substring(0, 6)} | 
                                                where Count -lt 3 | 
                                                              select Name

如果您的文件始终有空格分隔符,您也可以这样做

$result = import-csv "C:\temp\result.txt"  -Delimiter " " -Header h1 | group h1 | where Count -lt 3 | select Name