因为我有很多 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/