CSV:Powershell:删除单元格中包含特定单词的行

时间:2016-08-31 05:36:32

标签: csv powershell-v2.0 powershell-v3.0

我在解析csv和根据要求删除行时遇到了麻烦。

  1. 我的csv文件格式不均匀,并且有许多列是空白的,但我希望它们被视为正确的单元格
  2. csv在实际标题之前有一些行(不是固定行数),在底部可能有两行。我希望我的csv从标题而不是第一行开始。

      

    Import-Csv file.csv | Get-Member

  3. 这段代码只给我两个成员类型,但csv有超过20列

    csv示例:

    1,AB

    的x,33455

    空行

    的x,12134

    更多行

    女,呃fsdvf

    空行

    标题从这里开始,20 +列

    提前致谢

1 个答案:

答案 0 :(得分:0)

如果您知道标题(列),即使文件的第一行另有说明,您也可以强制Import-Csv拥有这些列:

Import-Csv file.csv -Header One, Two, Three, Four

缺点是您最终会得到一些您可能不需要的对象。 作为替代方案,您可以在标题中找到一行,并使用Get-Content / ConvertFrom-Csv组合:

$line = Select-String -Path file.csv -Pattern ^One | 
    ForEach-Object LineNumber
Get-Content -Path file.csv | 
    Select-Object -Skip ($line - 1) | 
    ConvertFrom-Csv

正则表达式可能应该更加冗长,但总体而言,这应该是最容易让应用程序生成假CSV的应用程序。