我正在尝试将此作为 powershell 中的一个衬里来执行,以便我可以继续根据检查字符串检查这些字符串。 我遇到的麻烦是无论我做什么,我都只能按字符串长度设置。
以下尝试未能获得所需的结果。一个文本很好,另一个按长度成功。我也尝试过将它们通过管道输入,但我相信两者都不接受管道输入。
感谢您的帮助,因为我是 Powershell 的新手。
PS C:\Users\IEUser> Get-Content Desktop/dict.txt | Sort-Object
PS C:\Users\IEUser> Get-Content Desktop/dict.txt | Sort-Object -Property Length
最佳答案
给定示例数组$toSort
:
$toSort = @(
'abcdefghwxyefg'
'abcdefghghijkl'
'abcdefghwxyefgabcdzx'
'abcdefghwxyefgabcdef'
'abcdzx'
'abcdef'
'abzxc'
'abcde'
'wxy'
'efg'
'abcdefgh'
'ijklmnop'
)
您可以使用 Sort-Object
首先按 Length
属性对数组进行排序,然后按字母顺序排序,如下所示:
$toSort | Sort-Object Length, { $_ }
谢谢 Mathias为了指出这一点,我之前使用的是 { $_[0] }
,它只会对每行的第一个字符进行排序。
包括实际答案应该如何:
Get-Content Desktop/dict.txt | Sort-Object -Property Length, { $_ } |
Out-File path/to/sortedDict.txt
如果你想玩得开心 LINQ您可以先使用 OrderBy
来完成相同的操作按 Length
和 ThenBy
排序字母顺序:
[Linq.Enumerable]::ThenBy(
[Linq.Enumerable]::OrderBy($toSort, [Func[object, int]]{param($s) $s.Length }),
[Func[object, string]]{param($s) $s }
)
关于powershell - 仅使用 powershell,对包含 300 行的文本文件进行排序,首先按字符串长度排序,然后,一旦达到该长度,按字母顺序设置它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68329174/