Crunch:使用 -d 1、-d 1% 选项,前两个字符为 DD

Crunch:使用 -d 1、-d 1% 选项,前两个字符为 DD

我正在尝试生成一个单词列表,其中最小长度为 6,最大长度为 6,其中第一对字符是固定且连续的,后两个字符是没有连续重复的大写字母字符,最后一对字符是没有连续重复的数字。这是我试图实现的模式:

|D|D|UpperAlpha|UpperAlpha|数字|数字

这是我使用 -d 选项尝试的:

crunch 6 6 -d 1, -d 1% -t DD,,%% -o list.txt

但它甚至没有生成一行。重申一下,唯一连续重复的是前两个字符 (D|D),而接下来的两个大写字母不应重复,最后两个数字字符也不应重复。这种模式可以通过 crunch 实现吗?

我正在使用 crunch 3.6 版本。

答案1

场景

根据您的要求,您的单词表中的单词应该包含:

  1. 两个大写字母 D,即后面DD跟着
  2. 两个不重复的大写字母后跟
  3. 两个不重复的数字。

根据要求,第一个词应该是DDAB01。现在,考虑以下两点:

  1. 男人紧缩并寻找-t选项

    -t @,%^
          Specifies  a pattern, eg: @@god@@@@ where the only the @'s, ,'s,
          %'s, and ^'s will change.
          @ will insert lower case characters
          , will insert upper case characters
          % will insert numbers
          ^ will insert symbols
    

    因此,任何由选项指定的模式-t都被视为文字字符,但以下字符除外@,%^这些字符将被 crunch 定义的字符替换。

    在您的案例中,模式是DD,,%%包含2 repeating literal uppercase D's

  2. 现在,男人紧缩并寻找-d选项

    -d numbersymbol
          Limits the number of duplicate characters.   -d  2@  limits  the
          lower  case  alphabet to output like aab and aac.  aaa would not
          be generated as that is 3 consecutive letters of a.  The  format
          is  number  then  symbol  where  number is the maximum number of
          consecutive characters and symbol  is  the  symbol  of  the  the
          character set you want to limit i.e. @,%^
    

你已经在你的命令中写道,-d 1,这意味着大写字母不能重复,并且-d 1%意思是数字不重复。

问题

  • -d 1,

    您已指定-d选项,字符和数字应该只有一个实例,忽略任何重复。

  • -t DD,,%%

    但是您传递了一个模式,该模式本身包含字母的重复D。一旦模式本身-d遇到选项DD,它就会使程序退出生成0 lines。希望您现在明白自己做错了什么。

解决方案/解决方法

创建 4 个长度的单词列表并通过管道将其添加到sedawk附加DD到开头,最后重定向到wordlist文件。

crunch 4 4 -d 1,% -t ,,%% | sed 's/^/DD/' > wordlist

或者

crunch 4 4 -d 1,% -t ,,%% | awk '{ print "DD"$1 }' > wordlist

请随意添加更多详细信息。

相关内容