powershell - 如何使用 powershell 对 CSV 列重新排序?

标签 powershell csv

输入文件:

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/

相关文章:

csv - 来自 CSV 文件的 awk 条件总和

python - 导出应用程序引擎数据时如何排除列

Azure DevOps CSV 导入问题 [默认状态 'Done',关闭日期字段]

r - 跳过或忽略目录中的空 csv 文件 - R

powershell - 向文本文件添加引号 powershell

windows - 如何使用 Powershell 搜索 Windows 搜索索引文件

object - Powershell - 将文本字段转换为对象

Python - 在对齐的列中打印 CSV 字符串列表

arrays - 为什么将 ConvertFrom-Json 管道传输到 Foreach-Object 需要括号?

powershell - 如何在Windows 10中设置静态IP地址?