powershell - 如何在 PowerShell 中使用 import-csv 指定列位置

标签 powershell

因为我有很多 csv 文件并且想要对 csv 文件的第一列进行排序,在这种情况下,每个文件的第一列名称可能不同。因此如何指定列位置来对许多不同的文件进行排序。 这是我试过并正在寻找的脚本,就像这段代码一样。($_.1)

$InputFilePath = "C\test.csv"
$OutputFolderPath ="C:\output.csv"
$UniqueValue = Import-Csv $InputFilePath  | Sort-Object -Property $_.1 | Export-Csv -Encoding Default -NoTypeInformation $OutputFolderPath

最佳答案

两种方式:

在每个项目上针对 psobject 进行反射

Import-Csv $InputFilePath |Sort-Object -Property { $_.psobject.Properties.Value[0] }

在这里,我们引用每个对象上隐藏的 psobject 成员集来“发现”它的属性,并解析第一个对象的值。

从第一行提取

$data = Import-Csv $InputFilePath
$sortKey = $data[0].psobject.Properties.Name[0]

$data |Sort-Object -Property $sortKey

这里我们首先将所有数据加载到一个变量中,然后找出集合中第一个对象的第一个属性名,然后使用该属性名传递给Sort-Object

您可能会发现这种方法对于中型文件(数千行)的性能稍好,但可能会随着文件大小的增加分配更多内存。

针对您的数据集测试每个,看看哪个最有效:-)

关于powershell - 如何在 PowerShell 中使用 import-csv 指定列位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65992990/

相关文章:

Python子进程调用powershell在pycharm IDE中不返回

sql-server - 将用户批量导入到 SQL Azure

powershell - 从 Powershell 中的参数中删除前导 0

powershell - 带有命名参数的调用命令启动进程

powershell - Asp.net 5.0 MVC6 EF6 迁移脚本

powershell - 如何在Powershell中删除表单 "items"

powershell - 这个 PowerShell 命令行引用/转义是怎么回事?

PowerShell IIS Set-WebConfigurationProperty - 锁定 ApplicationHost.config 部分

node.js - 消息 "the term ' ng' 未被识别为 cmdlet 的名称”

arrays - 将 PowerShell 数组传递给函数时如何展开它