【问题标题】:delete a CSV rows based on column value in Powershell根据 Powershell 中的列值删除 CSV 行
【发布时间】:2021-02-11 01:10:59
【问题描述】:

我每天都会收到一个包含我需要的信息的 CSV 文件,但我必须根据每行的不同条件过滤行。

例如 csv。

Name,Age,Date,Code
John,22,12/12/2020,5
Smith,16,12/01/2021,2
Jake,27,1/01/2020,1
Alice,18,2/02/2019,4
Fort,27,2/09/2021,2
Kevin,26,22/09/2019,5

我想要:

  1. 在第 2 列中删除所有 18 岁及以下的人
  2. 在第 3 列中删除 2020 年以后的所有日期
  3. 删除第 5 列中为 5 的所有代码

我的结果应该是

Name,Age,Date,Code
Jake,27,1/01/2020,1
Fort,27,2/09/2021,2

【问题讨论】:

标签: powershell cmd


【解决方案1】:
$csv = @"
Name,Age,Date,Code
John,22,12/12/2020,5
Smith,16,12/01/2021,2
Jake,27,1/01/2020,1
Alice,18,2/02/2019,4
Fort,27,2/09/2021,2
Kevin,26,22/09/2019,5
"@ | ConvertFrom-Csv

$csv.where{
    ($_.Age -le 18,
    [datetime]::ParseExact($_.Date, 'd/MM/yyyy', $null) -ge [datetime]::ParseExact('01/01/2020', 'dd/MM/yyyy', $null),
    $_.Code -eq 5)
}

Try it online!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-06
    • 2015-11-14
    • 1970-01-01
    • 2021-01-04
    • 2020-11-24
    相关资源
    最近更新 更多