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

如何在PowerShell中对比两个文件并输出共同的单词/字符串?

PowerShell提取两个文件的共有单词

实现思路

分别读取两个文件内容,拆分出所有单词/字符串,再通过集合操作提取两者的交集。

具体命令

方法1:使用Compare-Object(兼容低版本PowerShell)

# 读取文件内容,按非单词字符拆分(自动去除标点)并过滤空字符串
$wordsA = Get-Content "a.txt" | ForEach-Object { $_ -split '\W+' } | Where-Object { $_ }
$wordsB = Get-Content "b.txt" | ForEach-Object { $_ -split '\W+' } | Where-Object { $_ }

# 提取共有单词并去重
Compare-Object $wordsA $wordsB -IncludeEqual -ExcludeDifferent | Select-Object -ExpandProperty InputObject

方法2:使用HashSet(高效处理大文件)

# 读取并拆分单词,存入HashSet(忽略大小写,如需区分则移除第二个参数)
$setA = [System.Collections.Generic.HashSet[string]]::new(
    (Get-Content "a.txt" | ForEach-Object { $_ -split '\W+' } | Where-Object { $_ }),
    [System.StringComparer]::OrdinalIgnoreCase
)
$setB = [System.Collections.Generic.HashSet[string]]::new(
    (Get-Content "b.txt" | ForEach-Object { $_ -split '\W+' } | Where-Object { $_ }),
    [System.StringComparer]::OrdinalIgnoreCase
)

# 计算交集并输出
$setA.IntersectWith($setB)
$setA

自定义调整说明

  • 拆分规则:如果不需要去除标点,将-split '\W+'改为-split '\s+'(仅按空白字符拆分)。
  • 大小写敏感:移除HashSet构造中的[System.StringComparer]::OrdinalIgnoreCase参数,即可区分大小写。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 06:32:06