找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 32225|回复: 14

[问题求助] [已解决]PowerShell怎样按照某列中的数字大小进行排序?

[复制链接]
发表于 2013-7-24 12:54:58 | 显示全部楼层 |阅读模式
本帖最后由 DAIC 于 2013-7-29 21:54 编辑

文件内容a.txt:
Power DDD 2
Power AAA 10
Power CCC 3
Power BBB 1

按照第三列的数字从小到大排序,得到b.txt:
Power BBB 1
Power DDD 2
Power CCC 3
Power AAA 10

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2013-7-24 18:39:30 | 显示全部楼层
Sort-Object cmdlet 根据对象的属性值按升序或降序对对象排序。

您可以指定一个属性或多个属性(用于多键排序),也可以选择区分大小写或不区分大小写的排序。您还可以指示 Sort-Object 只显示对于特定属性具有唯一值的对象。
-Property <Object[]>
指定排序时要使用的属性。对象将基于这些属性的值进行排序。输入属性的名称。允许使用通配符。

如果您指定多个属性,则先按第一个属性对对象进行排序。如果多个对象的第一个属性的值相同,则按第二个属性对这些对象排序。此过程将一直继续,直至没有其他指定的属性或没有对象组。

如果您未指定属性,cmdlet 会根据对象类型的默认属性进行排序。

Property 参数的值可以是新的计算属性。若要创建计算属性,请使用哈希表。有效键包括:

-- Expression <字符串> 或 <脚本块>

-- Ascending <布尔值>

-- Descending <布尔值>
 楼主| 发表于 2013-7-24 20:20:47 | 显示全部楼层
回复 2# PowerShell


    太深奥了,看不明白,能否给个代码学习一下?
 楼主| 发表于 2013-7-24 21:08:16 | 显示全部楼层
回复 2# PowerShell
  1. get-content a.txt | sort-object
复制代码
这样得到的结果不对,10跑到前面去了:

e:\Test>powershell -file test.ps1
Power AAA 10
Power BBB 1
Power CCC 3
Power DDD 2
发表于 2013-7-25 20:18:24 | 显示全部楼层
    很简单的,别总等人喂到嘴里啊,
1 导入文本,规范属性
2 类似 Get-Process |sort-object -Property id |Out-GridView

另外,我说过,这种n行m列,的用excel处理起来很简单,
1 powershell导入数据.
2 用excel的分列功能
3 列排序.
 楼主| 发表于 2013-7-25 20:53:38 | 显示全部楼层
回复 5# PowerShell
  1. Get-Process |sort-object -Property id
复制代码
这个例子我看帮助手册的时候看到过,能明白。
问题是Get-Process的结果里面有 id 这个类似表头的属性。我的文本文件里面应该按照什么来规范属性呢?

另外,我说过,我们的服务器上不让随便安装软件,Office系列软件统统的没有。所以我才要学习PowerShell的。
发表于 2013-7-25 21:10:51 | 显示全部楼层
本帖最后由 PowerShell 于 2013-7-25 21:13 编辑

服务器+powershell一般是这样的场景,win服务器+dns服务器+powershell+dns命令库。也就是服务器管理。

powershell+office处理服务器的数据,一般是这样的场景:服务器实际是客户端,而powershell+office+杂七杂八命令的客户端机子其实是数据处理服务器。


数据处理客户端通过ftp,sftp等。上传文件,或者文件中的某一行,到,powershell数据处理机子。这个数据处理机子处理完后,将返回这一行,或者这一个文件。
注意,powershell数据处理机,这个服务器,可以从win,linux,这些数据源【主动拉数据】回来处理,然后放回去。或者把结果存入数据库。
 楼主| 发表于 2013-7-25 21:22:59 | 显示全部楼层
回复 7# PowerShell


每个公司的情况不一样。总之我们公司的服务器没有office,个人电脑有office没有PowerShell,我们只能在服务器上处理数据。
能否先指点一下我的问题具体如何解决?
发表于 2013-7-26 18:56:04 | 显示全部楼层
我跑厕所一蹲,才发现,没带手纸,家里也没有,我跑到小卖部一看也没有,跑到超市一看倒是有,但我却没带钱.你能否借给我个棍,让我用先
发表于 2013-7-26 19:35:42 | 显示全部楼层
这么恶心的人也能当版主?
起码的对人的尊重都没有,也能自诩为传教士?
发表于 2013-7-26 19:46:42 | 显示全部楼层
回复 9# PowerShell


把你的PowerShell代码贴出来PK一下吧
C:\>sort.exe -k3,3n a.txt
Power BBB 1
Power DDD 2
Power CCC 3
Power AAA 10
发表于 2013-7-26 19:54:58 | 显示全部楼层
我来个批的:

  1. @Echo Off&SetLocal EnableDelayedExpansion
  2. For /F "Tokens=1-3" %%A In (A.txt) Do Set "Str=000000%%C"&Set "_!Str:~-7!=%%A %%B %%C"
  3. For /F "Tokens=2 Delims==" %%A In ('Set _') Do Echo %%A
  4. Pause>Nul
复制代码
发表于 2013-7-27 14:00:18 | 显示全部楼层
论坛还是老样子啊,经常因为这些事情闹,每个人的价值观、正义感、智商、幽默感都不同,但胜利的总是“主流”。
发表于 2013-7-27 19:59:22 | 显示全部楼层
自诩为传教士,有何不可? 亿万个传教士也不如上帝吧,上帝给了你电脑么?帮你交电费了么?免费给你装了os和处理任务的各种脚本工具么?


又没自诩你亲爹,何来不尊重?

我没有电脑没有电,没有dos没有批,我认为[学习从来不是主动的][你不用批填鸭我就是不尊重]
发表于 2013-7-29 20:23:00 | 显示全部楼层
这点小问题,东拉西扯一大堆,无法及时帮别人解决问题,传教效率太低了。
  1. get-content a.txt | sort-object {[int]$_.split()[2]}
复制代码

评分

参与人数 2技术 +2 收起 理由
CrLf + 1 BOSS V587
DAIC + 1 乐于助人

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 00:43 , Processed in 0.026541 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表