如何使用 Powershell 对 CSV 数据进行排序? Windows (10)Linux (Pi OS)

如何解决如何使用 Powershell 对 CSV 数据进行排序? Windows (10)Linux (Pi OS)

一旦加载了 setState 文件,如下所示,数据是如何排序的?

CSV

另见:

https://devblogs.microsoft.com/scripting/use-powershell-to-sort-csv-files-in-order/

有类似的例子,只是数据按导入的顺序排序。


原始数据为:

PS /home/nicholas/powershell/csv> 
PS /home/nicholas/powershell/csv> $words = Import-Csv -Path ./sort.csv
PS /home/nicholas/powershell/csv> 
PS /home/nicholas/powershell/csv> $words                              

symbol code word  morse code phonetic
------ ---------  ---------- --------
A      Alfa/Alpha ● ▬        AL FAH
B      Bravo      ▬ ● ● ●    BRAH VOH
C      Charlie    ▬ ● ▬ ●    CHAR LEE
D      Delta      ▬ ● ●      DELL TAH
E      Echo       .●         ECK OH
F      Foxtrot    ● ● ▬ ●    FOKS TROT
G      Golf       ▬ ▬ ●      GOLF
Z      Zulu       ▬ ▬ ▬ ▬ ▬  ZOO LOO
H      Hotel      ● ● ● ●    HOH TELL
I      India      ● ●        IN DEE AH
J      Juliett    ● ▬ ▬ ▬    JEW LEE ETT
K      Kilo       ▬ ● ▬      KEY LOH
L      Lima       ● ▬ ● ●    LEE MAH
M      Mike       ▬ ▬        MIKE
N      November   ▬ ●        NO VEMBER
O      Oscar      ▬ ▬ ▬      OSS CAH
I      India      ● ●        IN DEE AH
P      Papa       ● ▬ ▬ ●    PAH PAH
Q      Quebec     ▬ ▬ ● ▬    KEH BECK
S      Sierra     ● ● ●      SEE AIRRAH
R      Romeo      ● ▬ ●      ROW ME OH
T      Tango      ▬          TANG OH
U      Uniform    ● ● ▬      YOU NEE FORM
V      Victor     ● ● ● ▬    VIK TAH
W      Whiskey    ● ▬ ▬      WISS KEY
X      X-ray      ▬ ● ● ▬    ECKS RAY
Y      Yankee     ▬ ▬ ● ●    YANG KEY
Z      Zulu       ▬ ▬ ▬ ▬ ▬  ZOO LOO

PS /home/nicholas/powershell/csv> 
PS /home/nicholas/powershell/csv> $words | sort 'code word'           
/usr/bin/sort: cannot read: 'code word': No such file or directory
PS /home/nicholas/powershell/csv> 
PS /home/nicholas/powershell/csv> sort $words              
/usr/bin/sort: cannot read: '@{symbol=A; code word=Alfa/Alpha; morse code=● ▬; phonetic=AL FAH}': No such file or directory
PS /home/nicholas/powershell/csv> 
PS /home/nicholas/powershell/csv> help sort
PS /home/nicholas/powershell/csv>              

从网站复制/粘贴。


获取会员节目:

nicholas@mordor:~/powershell/csv$ 
nicholas@mordor:~/powershell/csv$ head sort.csv 
symbol,code word,morse code,phonetic
A,Alfa/Alpha,● ▬,AL FAH
B,Bravo,▬ ● ● ●,BRAH VOH
C,Charlie,▬ ● ▬ ●,CHAR LEE
D,Delta,▬ ● ●,DELL TAH
E,Echo,.●,ECK OH
F,Foxtrot,● ● ▬ ●,FOKS TROT
G,Golf,▬ ▬ ●,GOLF
Z,Zulu,▬ ▬ ▬ ▬ ▬,ZOO LOO
H,Hotel,● ● ● ●,HOH TELL
nicholas@mordor:~/powershell/csv$ 

正如预期的那样。

解决方法

sort 是 Linux 系统上的外部命令(应用程序)。
换句话说,不要使用短名称 (sort),而是使用完整的 cmdlet 名称 Sort-Object:

$Words |Sort-Object 'code word'

正如 @postanote 所评论的,有关命令优先级的详细信息可以在 about_Command_Precedence 中找到。读到这里,实际上可能看起来很混乱,因为该过程被定义为按以下顺序发生:Alias,Function,Cmdlet,any external command/script(这应该使 alias 优先于 external命令 sort).
显然 sort 别名根本没有安装在 Linux 系统上(大概是为了防止它推翻外部原生 Linux 命令):

Windows (10)

Get-Command sort

CommandType     Name                                       Version    Source
-----------     ----                                       -------    ------
Alias           sort -> Sort-Object

Linux (Pi OS)

Get-Command sort

CommandType     Name                                       Version    Source
-----------     ----                                       -------    ------
Application     sort                                       0.0.0.0    /usr/bin/sort

这意味着您也可以通过使用 sort 别名手动否决外部 sort 命令来解决此问题:

Set-Alias sort Sort-Object

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?