gpt4 book ai didi

powershell - 仅使用 powershell,对包含 300 行的文本文件进行排序,首先按字符串长度排序,然后,一旦达到该长度,按字母顺序设置它们

转载 作者:行者123 更新时间:2023-12-04 16:37:14 35 4
gpt4 key购买 nike

我正在尝试将此作为 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 来完成相同的操作按 LengthThenBy 排序字母顺序:

[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/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com