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

如何统计模式文件A中每个模式在目标文件B中对应的匹配行数?

方案1:循环遍历模式文件(易理解,适配大多数场景)

直接逐行读取fileA中的模式,逐个统计在fileB中的匹配行数:

while IFS= read -r pattern; do
    # 统计当前模式匹配行数,-c参数直接返回匹配行数无需接wc -l
    count=$(grep -c "$pattern" fileB)
    echo "$pattern: $count"
done < fileA
  • 如果你的模式是纯固定字符串、不需要正则解析,给grep加上-F参数,既可以避免正则特殊字符转义问题,运行速度也更快。
  • 若需要仅匹配整行完全一致的内容,再加-x参数即可。

方案2:单awk命令(大文件场景效率更高)

仅读取fileA和fileB各一次,避免循环中多次重复读取fileB,适合文件体积较大的场景:

# 正则匹配模式版本
awk 'NR==FNR {patterns[$0]=0; next} {for (p in patterns) {if ($0 ~ p) patterns[p]++}} END {for(p in patterns) print p ": " patterns[p]}' fileA fileB

如果是固定字符串匹配,可以用以下性能更高的版本,避免正则解析开销:

# 固定字符串匹配版本
awk 'NR==FNR {patterns[$0]=0; next} {for (p in patterns) {if (index($0, p) != 0) patterns[p]++}} END {for(p in patterns) print p ": " patterns[p]}' fileA fileB

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 13:24:04