如果只有前 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
我有一个这样的 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