【问题标题】:How to exclude specific rows in CSV using PowerShell?如何使用 PowerShell 排除 CSV 中的特定行?
【发布时间】:2019-08-15 02:48:18
【问题描述】:

我有一个如下所示的 csv 文件:

NO   ID     TOTAL
1    123    1000
2    456    1500
3    123    2500
4    112    4000

我想排除 ID=123 和 TOTAL>3000 的行。

$File = Import-Csv 'SELL.csv'
   $File | Where-Object { $_.ID -eq "123", $_.TOTAL -lt "3000" } -Exclude |
   Export-Csv 'SELLREPORT.csv' -NoType

我做错了什么?

【问题讨论】:

    标签: powershell csv


    【解决方案1】:

    你的语法全错了。试试这个。

    $File = Import-Csv 'SELL.csv'
    $File | Where-Object { 
        ($_.ID -ne '123') -or ([int]$_.TOTAL -lt 3000)
    } | Export-Csv 'SELLREPORT.csv' -NoType
    

    添加[int] 将确保您的单元格被读取为整数而不是字符串。这将允许我们使用-ne,不等于和-ge,大于或等于。

    这不会排除匹配的结果,但会包含不匹配的结果。

    【讨论】:

    • 如果我想让它排除匹配的结果怎么办? @德鲁
    • @Job 这将满足您的需求,Where-Object 没有 -exclude 选项。
    • 它仍然不适合我。如果我有这样的csv数据NO ID TOTAL 0 123 1000 1 456 1500 2 123 2500 3 112 4000 4 123 4000 我只能输出这样的文件NO ID TOTAL 3 112 4000 我明白了,我必须使用or而不是and另一个问题是,如果我的$ID不是整数怎么办,我将 $ID 更改为“A”、“B”。
    • 我很难根据您的英语来确定您的要求。如果满足其中一个条件,但不是同时满足这两个条件,您是否希望它排除结果?
    • 我已经更新了答案以满足您更新的要求
    猜你喜欢
    • 2023-01-09
    • 2013-02-08
    • 1970-01-01
    • 1970-01-01
    • 2021-10-24
    • 2018-10-08
    • 1970-01-01
    • 2020-02-27
    • 1970-01-01
    相关资源
    最近更新 更多