![Crunch:使用 -d 1、-d 1% 选项,前两个字符为 DD](https://linux22.com/image/1560513/Crunch%EF%BC%9A%E4%BD%BF%E7%94%A8%20-d%201%E3%80%81-d%201%25%20%E9%80%89%E9%A1%B9%EF%BC%8C%E5%89%8D%E4%B8%A4%E4%B8%AA%E5%AD%97%E7%AC%A6%E4%B8%BA%20DD.png)
我正在尝试生成一个单词列表,其中最小长度为 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
场景
根据您的要求,您的单词表中的单词应该包含:
- 两个大写字母 D,即后面
DD
跟着 - 两个不重复的大写字母后跟
- 两个不重复的数字。
根据要求,第一个词应该是DDAB01
。现在,考虑以下两点:
男人紧缩并寻找
-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
现在,男人紧缩并寻找
-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 个长度的单词列表并通过管道将其添加到sed
或awk
附加DD
到开头,最后重定向到wordlist
文件。
crunch 4 4 -d 1,% -t ,,%% | sed 's/^/DD/' > wordlist
或者
crunch 4 4 -d 1,% -t ,,%% | awk '{ print "DD"$1 }' > wordlist
请随意添加更多详细信息。