powershell - 从第 2 行开始的 Powershell 排序
问题描述
我想对一个 .txt 文档进行排序,以便第一行保持在顶部,其余的按数字排序。
我目前有以下内容,但它删除了第一行,并且排序不正确,因为数字是例如 72、2、51、100、201、5 等,所以它排序为 100、2、201, 5、51、72。
我希望将其排序为 2、5、51、72、100、201
$emptyLine = Get-Content C:\Path\Document.txt | Select-Object -Skip 1
$emptyLine | Sort-Object | Out-File C:\Path\Document.txt
我知道这在 Notepad++ 中是可能的,但是需要进行排序的机器不允许安装任何新的东西。
如果有任何解决方案,我非常开放,不需要我安装新软件。
该机器是 Windows 10 Pro x64。
No Tool_Name Tool_Part
72 10 1 9. 1
43 36 3 29. 1
102 34 1 1.7 1
600 33 1 3. 1
76 3 1 5.3 1
75 3 1 5.5 1
251 2 3 3. 1
73 10 1 5.3 1
50 36 3 15.9 1
64 2 1 6. 1
(发布为 HTML 片段,以使格式更美观)
解决方案
利用多值赋值并将输出存储Get-Content
在两个变量中,然后只对第二个进行排序:
$First,$Rest = Get-Content C:\Path\Document.txt
@($First; $Rest |Sort-Object) |Set-Content C:\Path\Document.txt
在上述场景中,PowerShell 会将第一行分配给$First
,其余的分配给$Rest
如果您需要Sort-Object
按字符串属性的第一部分进行排序,就好像它是一个整数一样,您可以这样做:
@($First; $Rest |Sort-Object {(-split $_)[0] -as [int]}) |Set-Content C:\Path\Document.txt
推荐阅读
- exiftool - 使用未定义的标签添加到 exifdata
- error-handling - 如何在 sapper (svelte) 中捕获服务器错误
- php - PHP MySQL 覆盖 SELECT 语句返回 null
- excel - 如果满足条件vba,如何将范围设置为变量列并删除整行
- python - Python NoneType' 对象不是来自(我认为)str.split 函数的可调用错误
- dictionary - go 的 map 哈希函数如何工作,具有“相同”值的不同类型会导致不同的键?
- postgresql - 如何从计算引擎自动将 csv 数据加载到 Google Cloud SQL(PostgreSQL 表)中
- autodesk-forge - Forge Viewer - 我们可以将模型对象与在查看器中绘制的标记相关联吗?
- python - 在python中显示错误“ sh:1:语法错误:未终止的带引号的字符串”
- sql - 无效的对象名称 - 尝试了一些事情