You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell使用-or筛选CSV多值 导出空文件问题求助

问题原因

你的过滤写法逻辑完全错了。
PowerShell 括号优先级最高,会先算括号内的('de' -or 'at'):两个非空字符串做逻辑或运算,结果固定是布尔值$true,所以你实际执行的过滤逻辑是where Country -Like $true。Country字段存的是国家代码字符串,不可能匹配上布尔值,自然返回空结果,而且这段代码语法完全合法,所以运行时不会报任何错。
另外你是精确匹配固定国家代码,根本没必要用-Like,用等值判断-eq性能更好。

正确写法

写法1:按-or的规范语法写

-or是用来连接两个独立判断语句的,不能把多个要匹配的值打包塞在比较运算符右边,正确代码:

Import-Csv .\temp.csv -encoding utf8 |
where { $_.Country -eq 'de' -or $_.Country -eq 'at' } | 
Export-Csv .\new-de-at.csv -encoding utf8 -NoTypeInformation

如果后续需要做带通配符的模糊匹配,把代码里的-eq换成-Like即可。

写法2:用-in运算符(推荐,扩展性好)

如果之后要加更多国家代码,堆一串-or会非常啰嗦,直接用-in判断字段值是否在给定的取值列表里就行:

Import-Csv .\temp.csv -encoding utf8 |
where Country -in 'de','at' | 
Export-Csv .\new-de-at.csv -encoding utf8 -NoTypeInformation

后续要新增匹配项(比如瑞士ch),直接在列表里加值就行,改成'de','at','ch'即可,不用改判断逻辑。


内容的提问来源于stack exchange,提问作者Alex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 19:06:44