2

Я пытаюсь создать список слов, где минимальная длина равна 6, а максимальная длина равна 6, где первая пара символов является фиксированной и последовательной, вторые два символа являются верхними буквенными символами без последовательных повторов, а последний пара символов - это числа без последовательных повторов. Вот образец, которого я пытаюсь достичь:

| D | D | UpperAlpha | UpperAlpha | Кол-во | Кол-во

Вот что я попробовал, используя опцию -d:

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

Но он даже не генерирует ни одной строки. Повторяю, единственные последовательные повторы - это начальные два символа (D | D), в то время как следующие два символа в верхнем регистре не должны повторяться, и последние два цифровых символа не должны повторяться. Можно ли добиться этого с помощью хруста?

Я использую версию 3.6.

1 ответ1

2

Сценарий

Согласно вашим требованиям, слова в вашем списке слов должны иметь:

  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 трактуется как буквенный символ для символов , за исключением @ и ^ которые заменяются символами , как определено хруст.

    В вашем случае шаблон 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 слова и направьте его в 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

Не стесняйтесь добавлять дополнительные детали.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .