[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

本帖最后由 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
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

Sort-Object cmdlet 根据对象的属性值按升序或降序对对象排序。

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

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

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

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

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

-- Ascending <布尔值>

-- Descending <布尔值>
脚本是写给人看的,是写给用户看的,而不是写给机子看的
用户能看懂、会修改的脚本,才是好脚本。
写易懂的powershell脚本帮人解决问题,进而让用户学会自渔,吾所愿也

TOP

回复 2# PowerShell


    太深奥了,看不明白,能否给个代码学习一下?

TOP

回复 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

TOP

    很简单的,别总等人喂到嘴里啊,
1 导入文本,规范属性
2 类似 Get-Process |sort-object -Property id |Out-GridView

另外,我说过,这种n行m列,的用excel处理起来很简单,
1 powershell导入数据.
2 用excel的分列功能
3 列排序.
脚本是写给人看的,是写给用户看的,而不是写给机子看的
用户能看懂、会修改的脚本,才是好脚本。
写易懂的powershell脚本帮人解决问题,进而让用户学会自渔,吾所愿也

TOP

回复 5# PowerShell
  1. Get-Process |sort-object -Property id
复制代码
这个例子我看帮助手册的时候看到过,能明白。
问题是Get-Process的结果里面有 id 这个类似表头的属性。我的文本文件里面应该按照什么来规范属性呢?

另外,我说过,我们的服务器上不让随便安装软件,Office系列软件统统的没有。所以我才要学习PowerShell的。

TOP

本帖最后由 PowerShell 于 2013-7-25 21:13 编辑

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

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


数据处理客户端通过ftp,sftp等。上传文件,或者文件中的某一行,到,powershell数据处理机子。这个数据处理机子处理完后,将返回这一行,或者这一个文件。
注意,powershell数据处理机,这个服务器,可以从win,linux,这些数据源【主动拉数据】回来处理,然后放回去。或者把结果存入数据库。
脚本是写给人看的,是写给用户看的,而不是写给机子看的
用户能看懂、会修改的脚本,才是好脚本。
写易懂的powershell脚本帮人解决问题,进而让用户学会自渔,吾所愿也

TOP

回复 7# PowerShell


每个公司的情况不一样。总之我们公司的服务器没有office,个人电脑有office没有PowerShell,我们只能在服务器上处理数据。
能否先指点一下我的问题具体如何解决?

TOP

我跑厕所一蹲,才发现,没带手纸,家里也没有,我跑到小卖部一看也没有,跑到超市一看倒是有,但我却没带钱.你能否借给我个棍,让我用先
脚本是写给人看的,是写给用户看的,而不是写给机子看的
用户能看懂、会修改的脚本,才是好脚本。
写易懂的powershell脚本帮人解决问题,进而让用户学会自渔,吾所愿也

TOP

这么恶心的人也能当版主?
起码的对人的尊重都没有,也能自诩为传教士?
一路飘过的鸟~~~

TOP

回复 9# PowerShell


把你的PowerShell代码贴出来PK一下吧
C:\>sort.exe -k3,3n a.txt
Power BBB 1
Power DDD 2
Power CCC 3
Power AAA 10
Talk is cheap. Show me the code.
没事不要瞎扯淡,有能耐就把代码贴出来给我看。

TOP

我来个批的:
  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
复制代码
一路飘过的鸟~~~

TOP

论坛还是老样子啊,经常因为这些事情闹,每个人的价值观、正义感、智商、幽默感都不同,但胜利的总是“主流”。

TOP

自诩为传教士,有何不可? 亿万个传教士也不如上帝吧,上帝给了你电脑么?帮你交电费了么?免费给你装了os和处理任务的各种脚本工具么?


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

我没有电脑没有电,没有dos没有批,我认为[学习从来不是主动的][你不用批填鸭我就是不尊重]
脚本是写给人看的,是写给用户看的,而不是写给机子看的
用户能看懂、会修改的脚本,才是好脚本。
写易懂的powershell脚本帮人解决问题,进而让用户学会自渔,吾所愿也

TOP

这点小问题,东拉西扯一大堆,无法及时帮别人解决问题,传教效率太低了。
  1. get-content a.txt | sort-object {[int]$_.split()[2]}
复制代码
2

评分人数

    • CrLf: BOSS V587技术 + 1
    • DAIC: 乐于助人技术 + 1
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表