输入文件:
column1;column2;column3
data1a;data2a;data3a
data1b;data2b;data3b
目标:具有重新排序的列的输出文件,如下所示:
column1;column3;column2
...
问题: 使用 powershell 解决此问题的好方法是什么?
我知道存在 CSV 相关的 cmdlet,但这些都有局限性。请注意,记录的顺序不需要更改,因此不需要将整个输入/输出文件加载到内存中。
最佳答案
这是适合数百万条记录的解决方案(假设您的数据没有嵌入“;”)
$reader = [System.IO.File]::OpenText('data1.csv')
$writer = New-Object System.IO.StreamWriter 'data2.csv'
for(;;) {
$line = $reader.ReadLine()
if ($null -eq $line) {
break
}
$data = $line.Split(";")
$writer.WriteLine('{0};{1};{2}', $data[0], $data[2], $data[1])
}
$reader.Close()
$writer.Close()
关于powershell - 如何使用 powershell 对 CSV 列重新排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6386793/