以CSV格式导入并导出到文本文件

问题描述 投票:1回答:1

我一直在努力研究这一点,我正在尝试做一些我不确定在Powershell中是否可行的事情。我有这样的CSV文件,其中包含标题:

Field1,Field2,Field3

Field1aaa,abc,rst

Field2bbb,ghi,xyz

最后,我希望获取CSV并以特定格式导出到文本文件。对于我正在使用的程序,需要以这种方式对其进行格式化。有点像JSON文件,但不完全相同。我正在尝试为每个CSV行创建必要的文本块。这就是我从字面上试图获取的输出文本文件的内容

   Fieldaaa {
       field2<abc>
       field3<rst>
   }
   Field2bbb {
       field2<ghi>
       field3<xyz>

字段1的思考就像上面列出的每个组的标题一样。我已经完成了在csv中的加载:

$userobjects = Import-CSV C:\temp\testcsv2.csv. 

但是我不知道如何从这里开始。另外,我要添加的文本输出是Tab键。我想一旦知道如何解析此CSV并导出为文本,就可以通过在\ t中插入来实现。我可以使用Powershell 5.1,因为我正在使用该版本的Server 2016和Windows 10环境。请让我知道是否可以澄清其他内容。

powershell
1个回答
2
投票

您只需要遵循以下步骤:

  1. 获取内容(您已经做到了,并且已经在一个不错的对象中供您使用)
  2. 围绕每一行进行迭代,并将一些格式化的值附加到输出字符串中
  3. 将输出字符串写入您的文件

这里是您可以执行此操作的一种方法:

$outString = ""
$userobjects = Import-CSV C:\test\test.csv

foreach ($object in $userobjects) {
    $outString = @"
$outString

$($object.Field1) {
    field2<$($object.Field2)>
    field3<$($object.Field3)>
}    
"@
}

Set-Content C:\test\out.txt $outString

或者也许是更强大的方法是

Import-Csv C:\test\test.csv | ForEach-Object { 
    Write-Output @"
$($_.Field1) {
    field2<$($_.Field2)>
    field3<$($_.Field3)>
}
"@ } > c:\test\out.txt

如果您还不知道,我建议您检查ss64以获取Powershell示例

© www.soinside.com 2019 - 2024. All rights reserved.