Hod*_*deh 2 powershell cmd powershell-2.0
how can I sort a text file by 3rd column in PowerShell? That is part of the file:
reza zabihi 12 1
maryam joraee 17 2
leyla ahmadi 13 2
farzin farahbakhsh 16 1
keyvan maleki 8 1
kaveh ahangar 18 1
nooshafarin bakhtiari 13 2
roya afrashteh 13 2
asghar nazemi 18 1
jaleh nooruzi 16 2
阿里萨马迪 6 1
莫森阿迪比 3 1
菲鲁兹卡里米 7 1
莫斯塔法罗斯塔米安 18 1
贾法尔奥米迪 6 1
岛 zagrosi 12 2
somayyeh modaberi 16 2
沙赫拉姆·扎马尼 16 1
赛耶拉玛蒂 3 2
shirin rahjoo 12 2
我试过
Get-Content namef | Sort-Object { [double]$_.Split()[-2] } -Descending
Run Code Online (Sandbox Code Playgroud)
你快到了。您的代码无法按您预期的方式工作的原因是该Split()方法在每个空格处拆分字符串,因此您会得到很多空列。你真正想要的是在连续的空白处分割。要执行后者,请使用-split运算符:
Get-Content namef | Sort-Object { [double]($_ -split '\s+')[-2] } -Descending
Run Code Online (Sandbox Code Playgroud)
这是一种可能的解决方案:
Get-Content yourfile.txt | ForEach-Object {
$Line = $_.Trim() -Split '\s+'
New-Object -TypeName PSCustomObject -Property @{
FirstName = $Line[0]
LastName = $Line[1]
FirstValue = [int]$Line[2]
SecondValue = [int]$Line[3]
}
} | Sort-Object FirstValue | Format-Table
Run Code Online (Sandbox Code Playgroud)
这用于Get-Content加载文件,然后使用ForEach-Object循环迭代该文件的每一行(其中该行由自动变量 表示$_)。
它使用行上的方法删除尾随空格,然后使用表示一个或多个空格的.Trim()RegEx 字符串分割行。\s+
现在这$Line是一个数组,其中每个元素不包括空格,因此我们创建一个自定义 PowerShell 对象,在其中为每个项目指定一个名称,并通过$Line数组索引运算符访问它对应的值[0]。[1]我们将值列转换[int]为它们稍后将被正确排序(而不是将它们视为字符串)。
Sort-Object现在我们已经输出了一个 PowerShell 对象,我们可以简单地使用 FirstValue 属性将结果通过管道输出,然后将其发送到Format-Table以获取表结果。
| 归档时间: |
|
| 查看次数: |
10542 次 |
| 最近记录: |