[原创]使用PowerShell中的Sort-Object来完成排序

Windows PowerShell1-基础知识 PowerShell作为Windows系统中的默认脚本,其实在开发中,我们用的很少。接下来的几篇文章都将PowerShell的相关知识,本章知识介绍PowerShell基本的知识。 阅读详情
作者: Edengundam(马涛)
最近都在关注PowerShell的新闻组, 某人求助如下:
I need to read the content of a file and sort the content by fixed width.
Example file: sample_data.txt
23abdc1133cdde
14zzwd0034kkhe
65ppok7780hyyh

Read in the content and sort text by fixed position
(startpos:1,len:2)(startpos:3,len:4)(startpos:6,len:4)

当然, 只有这三行代码没有太多意思, 我构建了如下的变量, 来让我们体会PowerShell中Sort-Object的强大.

PS C:/> $a = '103903/06/2006','104803/06/2006','102103-01-2006','112203-06-2007','122304-08-2006','112204-12-2007'
PS C:/> $a
103903/06/2006
104803/06/2006
102103-01-2006
112203-06-2007
122304-08-2006
112204-12-2007

这个字符串看起来真晕啊...排序比较key1是字符串的前两位, 排序比较key2是字符串3,4位. 最后所有的位是排序比较key3, key3实际是日期. 

我将用这个看起来很混乱的字符串为你简单展示sort-object的两个强大特性:

1. 基于对象的比较;

2. 使用scriptblock来实现用户定义排序.

如下代码, 将根据最后10位所代表的日期, 对字符串进行排序:

PS C:/> $a | Sort-Object { [datetime]$_.substring(5) }
102103-01-2006
103903/06/2006
104803/06/2006
122304-08-2006
112203-06-2007
112204-12-2007

通过使用datetime类型, 将字符串转换成对象, 排序的格式就可以是任意的. 怎么样, 感觉好用嘛??有中文会怎么样呢??来看一眼

PS C:/> [datetime]'2006年3月1日'

2006年3月1日 0:00:00

太好了, 直接就被识别了, 很方便吧??

接下来, 我决定用key2减去key1的方式, 进行排序.

PS C:/> $a | sort { [int]$_.substring(2,2) - $_.substring(0,2) }
112203-06-2007
122304-08-2006
112204-12-2007
102103-01-2006
103903/06/2006
104803/06/2006

完成了, 这一次我编写了排序使用的scriptblock, 怎么样很方便吧??

最后我先按照key1排序, 之后用key3排序, 最后按照key2 - key1进行排序:

PS C:/> $a | sort {$_.substring(0,2)}, { [datetime]$_.substring(5) }, { [int]$_.substring(2,2) - $_.substring(0,2) }
102103-01-2006
103903/06/2006
104803/06/2006
112203-06-2007
112204-12-2007
122304-08-2006

可以说, sort-object别名sort的强大允许你构造复杂的排序规则, 通过scriptblock的能够避免很多额外的操作. 最后要提一点, 可以对hash表进行排序哦. 我就不在演示, 希望大家能看看get-help sort-object的说明.

 
PowerShell 将文本里的内容根据每一行行首的字符按字母的字典序排序 看完了《Learn Windows PowerShell in a Month of Lunches Third Edition》,总得做些东西才能巩固一下。 好巧不巧,今天正好碰到一个问题,寻思着用PowerShell来解决,还真给解决了。 警示 使用前请备份你的文件!!! 使用下面的方法,我的一个文件有几个中文字乱码了,推测可能和写入时的编码有关。 问题描述 咱有如下这个... 阅读详情

相关推荐

8、PowerShell 数据处理:排序、筛选与分组技巧

本文详细介绍了如何在 PowerShell 中使用多种数据处理工具,如 Sort-Object、Select-Object、Group-Object、Where-Object 和 ForEach-Object,完成数据的排序、筛选、分组和处理操作。通过性能对比和实际应用示例,帮助用户根据数据规模和需求选择合适的工具,提高数据处理效率。

grafana6viz的博客 118

PowerShell管道入门,看看你都会不(管道例子大全)

PowerShell的一个重中之重的功能就是管道(pipeline),本文从浅入深,一步一步详解管道的使用方法和例子,来看看有没有你所不知道的吧,如果全知道,恭喜你已经很厉害啦——适用于所有PowerShell应用小白与技术老鸟。另外欢迎各位技术大牛来补充讨论学习~ 1. 管道(pipeline)是什么 在Shell中一个重要的基本概念就是管道(pipeline),即在一组命令中...

weixin_30699235的博客 527

12、PowerShell 中对象的选择、排序、分组和测量操作

本文详细介绍了在 PowerShell 中如何使用 Where-Object 进行对象过滤,Select-Object 进行属性选择和计算,Sort-Object 进行排序操作,以及 Group-Object 和 Measure-Object 进行分组和统计。通过这些命令,可以高效地处理和分析数据,适用于各种系统管理和自动化任务。

3a9bq4r8t2y的博客 117

Sort-Object 帮助信息

 如下说明是翻译: help Sort-Object 产生的帮助信息. 译者: Edengundam(马涛) Sort-Object 大纲根据对象属性值进行排序. 语法Sort-Object [[-property] ] [-inputObject ] [-culture ] [-caseSensitive] [-unique] [-descending]

Windows PowerShell 1989

【PowerShell专栏】哈希表的键的排序

PowerShell哈希表默认无序,即使使用[Ordered]修饰符也无法按键名排序。要实现按键排序,需结合Sort-Object命令和GetEnumerator()方法。单独使用Sort-Object无效,必须通过$a.GetEnumerator()|Sort-Object -Property Key的方式才能实现真正的按键排序。该方法先获取哈希表枚举器,再按键名属性进行排序。

技术与管理的平衡木- 140

Windows Powershell排序和分组管道结果

使用Sort-Object和Group-Object可以对管道结果进行分组。 其实每条命令执行后的结果已经排过序了。例如通过ls 查看文件列表,默认会根据Name属性进行排序,但是你可以通过指定属性进行排序例如: PS C:Powershell> ls | Sort-Object Length Mode LastWriteTime Length Name ---- ------------- ------ ---- -a--- 2011/11/28 15:30 63 ping.bat -a--- 2011/12/2 18:47 140 test.ps1 -a--

sort自然排序、定制排序

1、自然排序:实现Comparable接口,重写compareTo(T o)方法 升序:this - 参数、降序:参数 - this 如果该对象小于、等于或大于指定对象,则分别返回负整数、零或正整数 2、定制排序:指定java.util.Comparator比较器对象,重写compare(T o1, T o2)方法 升序:o1 - o2、降序:o2 - o1 如果o1对象小于、等于或大于o2对象,则分别返回负整数、零或正整数

m0_45690923的博客 529

LC滤波器设计实战:从理论计算到PCB布局的完整指南

滤波器是信号处理与电路设计中的基础组件,用于从复杂信号中提取特定频率分量或抑制干扰噪声。其核心原理基于电感(L)和电容(C)等无源元件的频率选择特性,通过特定的网络拓扑实现幅频与相频特性的塑造。在工程实践中,LC滤波器因其结构简单、可靠性高、成本可控,成为射频、模拟及电源电路中的关键技术手段。其设计价值在于将理论网络综合转化为可量产、高性能的硬件解决方案,广泛应用于通信系统、音频处理、电源净化和传感器信号调理等场景。本文聚焦于LC滤波器的工程设计全流程,深入剖析了巴特沃斯、切比雪夫等经典类型的选型权衡,并重

weixin_34194829的博客 273

SORT详解: 代码解读

论文翻译: SORT:https://blog.youkuaiyun.com/zjc910997316/article/details/83962462 DEEPSORT:https://blog.youkuaiyun.com/zjc910997316/article/details/83721573 代码: SORT代码:https://github.com/abewley/sort (sort原作者abew...

计算机视觉 7656

ENU坐标系实战:5分钟搞定无人机导航中的站心坐标转换

本文针对无人机导航中GPS坐标与视觉感知不匹配的定位漂移问题,提供了基于ENU坐标系的实战解决方案。通过Python代码演示了如何快速、精准地实现地心地固坐标与站心坐标之间的转换,并详细解释了转换原理、精度对比及工程优化技巧,帮助开发者从根本上解决局部相对定位不准的难题。

mqtt6iot的博客 554

时空数据建模的跨节点联邦图神经网络:KDD21 Cross-Node Federated Graph Neural Network for Spatio-Temporal Data Modeling

前言 联邦学习(FL)虽然已经被广泛研究,但是对复杂的时空依赖关系进行建模以提高预测能力仍然是一个开放的问题。此外目前最优的时空预测模型假定对数据的访问不受限制,忽略了对数据共享的限制。基于此,本文提了一个基于图联邦学习的时空数据模型 Cross-Node Federated Graph Neural Network (CNFGNN),该模型在跨节点联邦学习的约束下,使用基于图神经网络(GNN)的架构对底层图结构进行编码,属于结构化联邦的一种,每个本地模型利用私有数据进行学习,并保持分散性。CNFGNN

qq_56027260的博客 1810

PowerShell 对象详解:属性、方法、Get-Member、Select-Object、Sort-Object 与对象管道实战

PowerShell通过对象的方式处理数据,使得我们能够更加灵活和高效地操作系统中的各种资源。通过学习对象的属性、方法以及如何通过管道处理对象,您将能更好地管理和自动化任务。掌握PowerShell中的对象操作,将大大提高您在Windows环境中的管理效率。希望本章内容帮助您深入理解PowerShell对象的概念,并能够熟练应用这些技能。

分享 Windows 系统部署、镜像封装、终端管理、故障排查与运维自动化实践,涵盖 Sysinternals、PowerShell 和 AI 工具应用。记录真实问题、探索过程与解决方法,也分享 AI 时代的学习心得和实践经验,让技术更易理解 2万+

2024年五大革新图像分割模型解析:架构创新与实战应用指南

本文深入解析2024年五大革新图像分割模型,包括SAM2、Mask2Former、DINOv2和Swin Transformer等,探讨其架构创新与实战应用。从多尺度处理、提示交互到自监督学习,这些模型在精度提升、效率优化和交互增强方面取得突破,广泛应用于医疗影像、工业质检和智慧城市等领域。

hadoop5ranger的博客 894

PowerShell中的管道命令

管道指的是将上一条命令的输出,作为下一条命令的输入。 管道上下命令,通过“|”连接。 那powershell中管道命令有哪些呢?一起来看看吧。 1.Where-Object: 说明:别名是where或?,从列表或命令输出结果中过滤选择你需要的项目。 如,显示文件夹中,长度小于1000的文件 dir | Where-Object {$_.length -lt 1000} dir:展示文件夹中的所有文件 Where-Object {$_.length -lt 1000}:显示长度小于1000

不怕死的假老练 1780

Tesseract in Java - Intellij IDEA对Tess4J的配置和使用

最近要弄OCR,搜到这个,官网全英文,很烦,看看有没有中文的博客介绍,擦,一个比一个奇葩,还是自己按照官方的来吧,外网慢的很,传到csdn给大家下载。中文训练库下载地址: http://download.youkuaiyun.com/detail/d_dmelon/9916532Tess4J3.4下载地址: http://download.youkuaiyun.com/detail/d_dmelon/9916519安装

Lewis的博客 1万+

AI快速变现之路,AI视频创作

初期投入$3000(工具订阅+样片制作),重点攻克跨境电商和本地生活服务市场。关注2025年AIGC视频工具的API降价趋势(如Pika企业版折扣可达50%),建议与云服务商签订长期合作协议。

qq_29896351的博客 1983

Powershell对象选择,排序和变量存储

Powershell对象选择,排序和变量存储 PowerShell基础教程(17)——对象的选择、排序和变量存储       可以使用 Select-Object cmdlet 来创建新的、自定义的 Windows PowerShell 对象,后者包含的属性是从用于创建他们的对象中选择的。键入以下命令可创建新对象,该对象仅包含 Win32_LogicalDisk WMI 类的 Name 和Fr

aoebug的博客 1075

【经验&技巧】如何在ADS中导入示波器的时域波形?

从示波器中导出的时域波形数据,需要按照固定的格式进行修改,并通过Display dataset对话框导入ADS。

一只豌豆象的博客 1573

PowerShell 管道 Pipeline 全攻略:对象传递、CSV / CliXML / HTML 导出、Compare-Object 对比与安全执行

把命令“串起来”,但传的是对象——这是 PowerShell 的超能力。掌握,你就能把采集 → 处理中间格式 → 报表 → 基线对比 → 风险预演打通成一条顺滑的流水线。建议你把上面的需要的话,我可以把本文整理成一页 PDF 速记卡,或者把练习题做成可直接运行的.ps1脚本,发你 👍。

分享 Windows 系统部署、镜像封装、终端管理、故障排查与运维自动化实践,涵盖 Sysinternals、PowerShell 和 AI 工具应用。记录真实问题、探索过程与解决方法,也分享 AI 时代的学习心得和实践经验,让技术更易理解 2万+

1、vectorCast单元测试常用操作

进入软件主页面,点击file,选择set working directory,随便选择一个保存该项目的目录即可。

weixin_59334478的博客 2157

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

PowerShell 第11章:过滤和比较(下)Where-Object、迭代命令行模型、$_作用域与实战练习

目标:把比较运算符真正“嵌”进管道,用写出可读、可维护、性能可控的过滤命令;掌握迭代式构建管道的方法。

分享 Windows 系统部署、镜像封装、终端管理、故障排查与运维自动化实践,涵盖 Sysinternals、PowerShell 和 AI 工具应用。记录真实问题、探索过程与解决方法,也分享 AI 时代的学习心得和实践经验,让技术更易理解 2万+

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

PowerShell——管道命令

1、 ls | Sort-DescendingName | Format-TableName,Mode ① 通过ls获取当前目录的所有文件信息 ②通过Sort -Descending对文件信息按照Name降序排列 ③将排序好的Name和Mode格式化成Table输出 2、Where-Object / where / ? :过滤列表项或命令,输出结果 例如: Get-ChildItem |Where-Object{$_.Length -...

weixin_44222852的博客 850

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

PowerShell 入门 4:动手实验与高频技能速记,Out-File、Alias、对象处理与数组实战

功能命令查看 Out-File 参数设置输出文件宽度Out-File -Width <宽度>防止覆盖文件查看所有别名Get-Alias使用最短命令查看进程查找处理对象的命令查看数组帮助💡本学习笔记适合初学者反复回顾练习,并逐步掌握 Cmdlet 的命令构成、帮助文档查阅技巧,以及参数缩写与别名的高效使用。如需进一步了解 Cmdlet 的构造逻辑与脚本技巧,可继续深入《PowerShell 实战指南》第 4 章。是否需要我将本笔记导出为 PDF 或 Markdown 格式?

分享 Windows 系统部署、镜像封装、终端管理、故障排查与运维自动化实践,涵盖 Sysinternals、PowerShell 和 AI 工具应用。记录真实问题、探索过程与解决方法,也分享 AI 时代的学习心得和实践经验,让技术更易理解 2万+

PowerShell入门到实战:从CMD升级到对象管道自动化运维

命令行是Windows系统管理与自动化运维的基础工具,其核心原理在于通过管道传递对象而非文本,从而实现高效的数据筛选、排序与批量处理。掌握对象管道技术,能够将零散的手动操作转化为可复用、可批量执行的脚本,显著提升文件管理、进程服务控制、系统信息采集等日常运维场景的效率。在软件部署与更新管理方面,结合包管理器与脚本调用,可进一步实现自动化部署。本文围绕PowerShell与CMD的差异、对象管道机制、脚本编写及常见问题排查,系统梳理了从基础命令到自动化实战的完整路径,帮助读者快速上手并规避执行策略、编码乱码等

weixin_33782386的博客 483

powershell命令复习

管道是一种在命令行环境中使用的技巧,它允许一个命令的输出作为另一个命令的输入。示例:Get-ChildItem | Where-Object -Property "Name" -like "ship*"需要注意的是,这是一种严格比较,意味着等于指定值的对象将被排除在结果之外。只显示类型为fuction的可用命令:Get-Command -CommandType "Fuction"Get-Help:powershell命令菜单,Get-Help Get-Date:Get-date的用法。

weixin_51529630的博客 761

PowerShell 按表中的某列的十进制排序

默认情况下,`Handle` 属性可能是以十六进制格式显示的。2. 使用 `ForEach-Object` 对每个进程对象进行处理,使用 `Add-Member` 动态添加一个名为 `DecimalHandle` 的新属性,这个属性的值是将原始的 `Handle` 属性从十六进制转换为十进制。4. 使用 `Format-Table` 显示结果,包括进程名称(`Name`)、原始的十六进制句柄(`Handle`)和转换后的十进制句柄(`DecimalHandle`)。百度文库智能助手 这波给力!

tiandyoin的专栏 401
上一篇: [原创]使用PowerShell来完成像awk一样对多个文件的筛选(二)
下一篇: [原创]使用PowerShell替换字符串中某个字符为特定数值
PowerShell
博客等级 码龄19年 103粉丝 110原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值