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

How to count lines if only the first 6 characters is different?

我有一个这样的 txt 文件:

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

我得数行数。比如:ksakks有6行,bccscd只有4行。如果有的不足3行,那我就得把他们的"name"存起来,如果多了,那我必须将他们的 "name" 保存在一个数组中。

我该怎么做?

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

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

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

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

我用你的数据创建了一个样本文件,它来得很好。以下是屏幕截图供您参考。

输出:

文本文件

希望对您有所帮助

试试这个

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

如果您的文件总是有 space 分隔符,您也可以这样做

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