我想完成以下任务:
现在我得到了这个输出:
String Name Count
----------- -----
example 1 9
example23 10
example 8
我想这样:
String Name Count
----------- -----
example23 10
example 1 9
example 8
以下是我的代码:
curl -k -X GET -H <API CALL> C:\list.txt
$scriptfile = Get-Content C:\list.txt
$listsummaryfile = $scriptfile |
Select-String -Pattern '(?smi)"name":"(.*?)"' -AllMatches |
Foreach { $_.Matches } |
Foreach { $_.Groups[1] } |
Foreach { $_.Value }
foreach ($_ in $listsummaryfile ) {
$measureObject = $_ | Measure-Object -Character
$count = $measureObject.Characters
$info = New-Object -TypeName PSCustomObject -Property @{
"String Name"= $_; Count = $count
}
$info
}
输出包含所有数据,但我无法弄清楚如何对其进行排序。我已经尝试过在网络上找到的排序对象,排序和许多其他命令,但没有任何工作(我认为它与循环有关,并在其中调用$ info,但改变它没有&# 39; t产生所有输出)。任何帮助将不胜感激,谢谢!
答案 0 :(得分:1)
它应该像翻转到Foreach-Object
那样简单,然后用它来排序:
$listsummaryfile |
Foreach-Object {
$measureObject = $_ | Measure-Object -Character
$count = $measureObject.Characters
$info = New-Object -TypeName PSCustomObject -Property @{
"String Name"= $_; Count = $count
}
$info
} | Sort-Object -Property Count
答案 1 :(得分:0)
如果我错了,请原谅我,但我认为你在这里过分复杂了你的问题。无需计算字符串的字符数,因为所有字符串都已具有length
属性(一个是别名)。
PS C:\temp> "adfasdf".Length
7
相反,您可以直接使用Sort-Object
计算属性。由于它是一个字符串而不是一个复杂的对象,我们必须按照我期望的方式拉出实际的字符串。
$listsummaryfile |
Sort-Object Length -Desc |
Select-Object @{name="string name";expression={$_.psobject.BaseObject}},Length