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

如何用Crunch生成并过滤单字符最多出现2次的8位字典?

解决Crunch字典过滤:排除字符出现超2次的条目

Crunch本身确实没有直接限制字符总出现次数的选项,你可以通过管道把Crunch的输出传给grep或者awk来完成二次过滤,下面是两种实用方法:

方法1:用grep正则快速过滤

直接用反向匹配排除存在字符出现3次及以上的条目,命令如下:

crunch 8 8 ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 -d 1 | grep -vE '(.).*\1.*\1'

正则说明:

  • -v:反向匹配,意思是排除符合后面正则的行
  • -E:启用扩展正则表达式,不用转义括号
  • (.).*\1.*\1:匹配任意一个字符((.)),然后在字符串中再次出现两次(.*\1.*\1),也就是这个字符总共出现至少3次。只要字符串里有这样的字符,就会被排除。

方法2:用awk直观统计过滤

如果觉得正则不好懂,awk的方法逻辑更直白,逐个统计字符出现次数,一旦有字符超过2次就跳过:

crunch 8 8 ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 -d 1 | awk '{
    delete count;
    for(i=1; i<=length($0); i++){
        c=substr($0,i,1);
        count[c]++;
        if(count[c]>2) next;
    }
    print $0
}'

逻辑说明:

  1. 对每一行生成的字符串,先清空统计用的数组count
  2. 遍历字符串的每一个字符,逐个计数
  3. 只要发现某个字符出现次数超过2,直接跳过当前行
  4. 所有字符都符合≤2次的要求,就输出这一行

两种方法都能满足你的需求,awk的写法更易读,grep的命令更简洁,你可以根据自己的习惯选择。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 02:25:21