导入CSV并导出到文本文件

时间:2020-03-25 01:18:34

标签: powershell

我一直在努力研究这一点,并且正在尝试做一些我不确定在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环境。请让我知道是否可以澄清其他内容。

1 个答案:

答案 0 :(得分: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示例