【问题标题】:Removing Header and Footer from imported .csv从导入的 .csv 中删除页眉和页脚
【发布时间】:2014-03-28 20:17:07
【问题描述】:

我将 3 个 .csv 文件合并为一个。这段代码有效:

    Get-ChildItem 'C:\Scripts\testing\csvStuffer\temp\Individual.*.csv' | 
        ForEach-Object {Import-Csv $_} | 
        Export-Csv -NoTypeInformation 'C:\Scripts\testing\csvStuffer\temp\MergedCsvFiles.csv'

问题是每个 .csv 文件都有一个页眉和一个页脚。 我不想保留任何文件的页眉或页脚。 关于我需要添加到上述代码中以删除页眉和页脚的任何建议??? 谢谢!

【问题讨论】:

  • 页脚在 CSV 中无效,因此这是您的第一个问题。每个文件中的标题是否相同?
  • 也许我应该说 Firstline 和 Lastline。不,它们不一样。

标签: powershell export-to-csv


【解决方案1】:

这不是最优雅的解决方案,但它适用于我的测试文件。

Get-ChildItem 'C:\Scripts\testing\csvStuffer\temp\Individual.*.csv' | 
        ForEach-Object {
            $filecontent = get-content $_ | select-object -skip 1;
            $filecontent | select -First $($filecontent.length -1) | Set-Content -Path $_;
        };

使用select-object 可以轻松跳过第一行。删除最后一行需要做更多的工作,但由于 get-content 返回一个行数组,您可以只抓取该数组中除最后一个元素之外的所有元素。

【讨论】:

  • 除了第一行和最后一行之外,您可以使用以下内容获取所有内容:$array[1..($array.count -1)]
  • 这不会写入新文件并追加,每次运行时都会从每个文件中删除一行??
  • 这行得通。谢谢!!! Get-ChildItem $PathToFiles | ForEach-Object {$filecontent = 获取内容 $_ |选择对象-skip 1;$filecontent |选择 -First $($filecontent.length -1) |输出文件 $OutputFile -Append}
【解决方案2】:

看起来 alroc 已经给出了答案,但既然我已经写好了,我想我也会发布这个。它不会将其全部加载到变量中,它只是读取每个文件,删除当前文件的第一行和最后一行,然后通过管道传递到带有 -append 的输出文件。

gci 'C:\Scripts\testing\csvStuffer\temp\Individual.*.csv' | %{
$(gc $_.fullname|skip 1)|select -First ($(gc $_.fullname|skip 1).count-1)
}|Out-File -Append 'C:\Scripts\testing\csvStuffer\temp\MergedCsvFiles.csv'

【讨论】:

  • 这个错误:ObjectNotFound: (skip:String) [], CommandNotFoundException
  • 什么版本的powershell?该脚本在我的机器上运行良好,可能是版本冲突?
  • 我安装了第 4 版
  • 您是在使用该代码复制和粘贴,还是可以更新您的问题以反映您现在正在使用的内容?
猜你喜欢
  • 2019-09-18
  • 1970-01-01
  • 2012-01-03
  • 2015-10-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多