【问题标题】:Powershell add header/row to CSVPowershell将标题/行添加到CSV
【发布时间】:2013-07-23 18:17:20
【问题描述】:

我有一段代码可以从文件管理器生成共享名的 CSV。

它是一个制表符分隔的 CSV,只是共享名,不包括其他详细信息。

我想要输出:

010
2012 Comp
2012 Comp Plan Team

并将其替换为:

\\<filer>\010
\\<filer>\2012 Comp
\\<filer>\2012 Comp Plan Team

现在我有以下内容:

$Content = import-csv C:\temp\new.txt -Delimiter "`t"

我可以使用 Add-Member 命令将新属性/值添加到数组中吗?还是我以错误的方式解决这个问题?


到目前为止,cmets 都很棒,谢谢大家。我忘了补充一点。我想知道如何在 csv 中添加另一列?严格用于文件管理器名称。我正在考虑生成大量共享名称和文件管理器名称的 csv。所以只是想知道如何将其添加到其中?

【问题讨论】:

    标签: powershell csv


    【解决方案1】:

    如果您显示的是文件的唯一内容,则无需理会Import-Csv,只需使用Get-Content

    (Get-Content 'C:\temp\new.txt') -replace '^', '\\<filer>\'
    

    上面只产生一个字符串数组。要使其成为具有 2 列的 CSV,您可以做几件事,例如将字符串数组转换为具有相同 2 个属性的对象数组:

    (Get-Content 'C:\temp\new.txt') -replace '^', '\\<filer>\' |
      select @{n='Path';e={$_}}, @{n='col2';e={...}}
    

    或将,something 附加到字符串并将数组转换为CSV:

    (Get-Content 'C:\temp\new.txt') -replace '^', '\\<filer>\' -replace '$', ',...' |
      ConvertFrom-Csv
    

    【讨论】:

    • 只是检查一下,因为我的powershell非常缺乏,插入符号是一个正则表达式来显示行的开头?或者它是一个 powershell 表达式?
    • 正确,是匹配行首的正则表达式。该命令的基本意思是“从文件中读取所有行并在每行前面加上给定的字符串”。
    【解决方案2】:

    不导入-CSV。但是,你应该使用Get-Content,IMO。

    $content = Get-Content C:\test.csv
    $content | ForEach-Object { '\\<filer>\'+$_ } | Set-Content C:\new-Test.csv
    

    【讨论】:

    • 我错过了这个问题的一个非常重要的部分。
    猜你喜欢
    • 2016-12-31
    • 1970-01-01
    • 1970-01-01
    • 2015-01-18
    • 2015-12-02
    • 2012-04-06
    • 2013-06-05
    • 1970-01-01
    相关资源
    最近更新 更多