【问题标题】:How to ignore first N rows in a CSV-file in Powershell如何在 Powershell 中忽略 CSV 文件中的前 N ​​行
【发布时间】:2021-03-22 10:45:18
【问题描述】:

我有一个 CSV 文件,前 9 行包含不属于 CSV 数据的文本。列的标题放在第 10 行,随后的行 (11+) 包含数据。该文件是通过 rest 获取的。

我如何简单地告诉 Import-Csv cmdlet 执行此操作?

我试过这个:

$tempFile = New-TemporaryFile
$url = "some-url/data.csv""
Invoke-RestMethod -Uri $url -Method Get -OutFile $tempFile #Put CSV into file from Rest API
$f = Import-Csv -Path $tempFile -Delimiter ';' -Skip 9 -Header @("Datum", "Tid (UTC)", 
    "Lufttemperatur", "Kvalitet")
    $f | Select-Object { $_ | Select-Object Datum, 'Tid (UTC)', Lufttemperatur, Kvalitet}

即我试图跳过文件中的第一行。但是,这似乎并不奏效。我在这里做错了什么?

欢迎任何想法! 亲切的问候, 彼得

【问题讨论】:

  • 先用Get-Content | Select-Object -Skip 9再用ConvertFrom-CSV怎么样?
  • 如果此文件的编写者以 # 字符开始这 9 行中的每一行,Import-Csv 会将它们视为 cmets。如果您可以控制您的提要,您可能需要考虑这一点。

标签: powershell rest csv


【解决方案1】:

使用ConvertFrom-Csv

Get-Content -Path $filePath |    <# Get lines #>
  Select-Object -Skip 11 |       <# Skip 11 lines #>
  ConvertFrom-Csv                <# Convert rest from CSV #>

【讨论】:

    【解决方案2】:

    解决了!

    跳过行的正确语法应该是:

    $f = Import-Csv -Path $tempFile -Delimiter ';' -Header @("Datum", "Tid (UTC)", "Lufttemperatur", "Kvalitet") | Select-Object -Skip 9
    

    /P

    【讨论】:

    • 如果它适合您,那就更好了,但这与您的问题不符。 the first 9 rows contain text that is not part of the CSV-data. The headers for the columns are put on row 10
    • 类型信息默认在第一行。如果您将`-NoTypeInformation` 添加到Import-CSV 命令,您可能可以使用-Skip 10
    猜你喜欢
    • 2012-01-15
    • 1970-01-01
    • 1970-01-01
    • 2016-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-14
    相关资源
    最近更新 更多