Powershell:选择并排序文本文件


你好,

我有一个文本文件 test.txt ,其中包含以下内容:

AAAA z 669
BBBB y 9555
AAAA z 5 
BBBB z 48
CCCC y 1166
AAAA x 67777
BBBB z 223

我想找到带有“z”的行并根据最后一列对结果集进行排序。

我尝试过的:

Get-Content .\test.txt | Select-String "z" | Sort-Object { [double]$_.split()[-1] }

这给出了错误:

Sort-Object : Method invocation failed because [Microsoft.PowerShell.Commands.MatchInfo] does not contain a method name
d 'split'.
At line:1 char:46
+ ... test.txt | Select-String "z" | Sort-Object { [double]$_.split()[-1] }
+                                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidResult: (AAAA z 669:PSObject) [Sort-Object], RuntimeException
    + FullyQualifiedErrorId : ExpressionEvaluation,Microsoft.PowerShell.Commands.SortObjectCommand

解决方案1

尝试将内容视为 .csv 文件并使用 Import-Csv (Microsoft.PowerShell.Utility) – PowerShell | 导入CSV 微软学习[^] 创建一组自定义对象。 然后您应该能够对对象进行排序。

[edit]

这似乎有效:

电源外壳
$A = Import-Csv -Path .\test.txt -Delimiter " " -Header 'One','Two','Three'
$A | Where-Object -Property Two -Like "z" | Sort-Object { [int]$_.Three }

注意,我用过 int 而不是 double 因为所有值都是整数。

[/edit]

コメント

タイトルとURLをコピーしました