генерация словаря

На самом деле это единственный раздел про unix на этом форуме

Модераторы: /dev/random, Модераторы разделов

Ответить
Аватара пользователя
biomass
Сообщения: 97
ОС: ubuntu_9,04

генерация словаря

Сообщение biomass »

Всем привет. Как с помощью подручных средств, которые есть в каждом дистро сгенерировать словарик. Есть часть слова IX1VPV(7,8,9)XXXXXX. Нужно сгенерировать словарик типа
IX1VPV7[000000...999999]
IX1VPV8[000000...999999]
IX1VPV9[000000...999999]
Хотелось бы узнать КАК это делается, ну или куда копать при поиске.
Спасибо
Убей в себе Windows!!!

Desktop: AMD Sempron 1.6 Ghz, 512 Mb Ram
EEEPc 701, Backtrack 3
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5289
ОС: Gentoo

Re: генерация словаря

Сообщение /dev/random »

biomass писал(а):
24.11.2009 16:00
Всем привет. Как с помощью подручных средств, которые есть в каждом дистро сгенерировать словарик. Есть часть слова IX1VPV(7,8,9)XXXXXX. Нужно сгенерировать словарик типа
IX1VPV7[000000...999999]
IX1VPV8[000000...999999]
IX1VPV9[000000...999999]
Хотелось бы узнать КАК это делается, ну или куда копать при поиске.
Спасибо

Ничего не понял. "IX1VPV(7,8,9)XXXXXX" - это прямо так и есть? Со скобками? А иксы - это число? А "IX1VPV7[000000...999999]" - то, что в квадратных скобках - это дословно писать, вместе с многоточием? Или туда скопировать то, что обозначено иксами? И нужны ли сами скобки?
Спасибо сказали:
Аватара пользователя
biomass
Сообщения: 97
ОС: ubuntu_9,04

Re: генерация словаря

Сообщение biomass »

Иксы это и есть числа. Квадратные скобки означают диапазон значений. Т.е. будет примерно так
IX1VPV7000000
IX1VPV7000001
IX1VPV7000002
.........................
IX1VPV7000010
IX1VPV7000011
.........................
IX1VPV7999999
Убей в себе Windows!!!

Desktop: AMD Sempron 1.6 Ghz, 512 Mb Ram
EEEPc 701, Backtrack 3
Спасибо сказали:
Аватара пользователя
eddy
Сообщения: 3321
Статус: Красный глаз тролля
ОС: ArchLinux
Контактная информация:

Re: генерация словаря

Сообщение eddy »

Думаю, на С это сделать проще, т.к. конструкция типа

Код: Выделить всё

for A in $(seq 0 999999)
do
echo tralala$A
done

приведет к подвисанию компьютера работает долго.
(попробовал. у меня и после ^C до сих пор подвисает - оперативка еще не освободилась...)

Конструкция

Код: Выделить всё

A=-1
while [ $A -lt 999999 ];
do
$(( $A + 1 ))
echo tralala$A
done

памяти много не ест, но работать будет тоже долго.

На С вам можно использовать библиотеку regexp и метод, похожий на используемый для генерирования временных файлов.
RTFM
-------
KOI8-R - патриотичная кодировка Изображение
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5289
ОС: Gentoo

Re: генерация словаря

Сообщение /dev/random »

Имеется в виду примерно это?

seq -f %06.f 0 999999 | sed 's/.*/IX1VPV7&/'
Спасибо сказали:
Аватара пользователя
Voral
Сообщения: 1205
ОС: Debian Wheezy (amd64)
Контактная информация:

Re: генерация словаря

Сообщение Voral »

/dev/random писал(а):
24.11.2009 16:38
Имеется в виду примерно это?


Или так

Код: Выделить всё

seq -f IX1VPV7%06.f 0 999999


А можно как-то передать типа:

Код: Выделить всё

seq 8 9 | seq -f IX1VPV[тут_результат_первого_ seq]%06.f 0 999999


?
То что не убивает нас, делает нас сильнее! © Ницше.
When life puts you in tough situations, don’t say "why me". Just say "try me © ?
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5289
ОС: Gentoo

Re: генерация словаря

Сообщение /dev/random »

Voral писал(а):
24.11.2009 16:55

Код: Выделить всё

seq 8 9 | seq -f IX1VPV[тут_результат_первого_ seq]%06.f 0 999999

Код: Выделить всё

seq 8 9 | xargs -i seq -f IX1VPV{}%06.f 0 999999
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: генерация словаря

Сообщение t.t »

/dev/random писал(а):
24.11.2009 16:38
seq -f %06.f
seq -w? Или я что-то упустил?
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5289
ОС: Gentoo

Re: генерация словаря

Сообщение /dev/random »

t.t писал(а):
25.11.2009 11:27
/dev/random писал(а):
24.11.2009 16:38
seq -f %06.f
seq -w? Или я что-то упустил?

Ничего не упустил, просто сишная привычка.
Спасибо сказали:
Аватара пользователя
biomass
Сообщения: 97
ОС: ubuntu_9,04

Re: генерация словаря

Сообщение biomass »

Спасибо. Скрипт seq -f %06.f 0 999999 | sed 's/.*/IX1VPV7&/' прекрасно работает. Только не могли бы вы раскрыть суть следующего "-f %06f". В мане -f - формат выводимого числа. Выводит в фомате команды printf, в мане которой не нашел значение этого флага и его параметров.
Убей в себе Windows!!!

Desktop: AMD Sempron 1.6 Ghz, 512 Mb Ram
EEEPc 701, Backtrack 3
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5289
ОС: Gentoo

Re: генерация словаря

Сообщение /dev/random »

biomass писал(а):
26.11.2009 02:32
Спасибо. Скрипт seq -f %06.f 0 999999 | sed 's/.*/IX1VPV7&/' прекрасно работает. Только не могли бы вы раскрыть суть следующего "-f %06f". В мане -f - формат выводимого числа. Выводит в фомате команды printf, в мане которой не нашел значение этого флага и его параметров.

Не "%06f", а "%06.f". %f - число с плавающей точкой (единственный формат, который понимает seq). Для него задаётся ширина в формате "x", "x." или "x.y" (если y опущен, а точка - нет, подразумевается y=0; если опущено и то, и другое - 6). Здесь x - минимальная ширина поля в символах (если x начинается с нуля, то до требуемой ширины число дополняется нулями, иначе - пробелами), а y - число знаков после запятой. Т.е., в данном случае это означает, что дробные знаки не выводятся вообще, и число дополняется слева нулями до 6 знаков.

Но вообще, как правильно заметил t.t, здесь проще было использовать параметр -w, который автоматически дополняет число нулями. Строку формата я использовал исключительно по сишной привычке.
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: генерация словаря

Сообщение t.t »

/dev/random писал(а):
26.11.2009 02:56
Но вообще, как правильно заметил t.t, здесь проще было использовать параметр -w, который автоматически дополняет число нулями.
Позволю себе немного раскрыть: дополняет нулями до количества цифр заданного максимума.

Код: Выделить всё

$ echo $(seq -w 10)
01 02 03 04 05 06 07 08 09 10
$ echo $(seq -w 10000 | head -10)
00001 00002 00003 00004 00005 00006 00007 00008 00009 00010
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Ответить