The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Вопрос по bash"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (Shell скрипты)
Изначальное сообщение [ Отслеживать ]

"Вопрос по bash"  +/
Сообщение от Raven email(??) on 25-Июл-13, 17:04 
Есть такая строчка на bash.  
for i in `seq 0  32`;    do    echo "obase=2; $i" | bc; done
Результат его выполнения
1
10
11
100
101
и т.д.

Вопрос - есть ли какой-то простой способ вывести результат в таком виде?
AAAAA
AAAAB
AAABA
AAABB
и т.д.

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Вопрос по bash"  +1 +/
Сообщение от Аноним (??) on 25-Июл-13, 18:11 
Ну совсем не думая можно так:

for i in `seq 0 32`; do echo "obase=2; $i" | bc; done | awk '{printf "%07d\n", $0}' | tr "01" "AB"

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Вопрос по bash"  +/
Сообщение от Raven email(??) on 25-Июл-13, 18:23 
Спасибо.
Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "Вопрос по bash"  +1 +/
Сообщение от stereoPANDA (ok) on 25-Июл-13, 18:40 
for i in `seq 0  32`;    do    echo "obase=2; $i" | bc; done | awk '{if(length($1)==1) print "0000"$1 } {if(length($1)==2) print "000"$1} {if(length($1)==3) print "00"$1}  {if(length($1)==4) print "0"$1} {if(length($1)==5) print $1}' | tr '01' 'AB'

я добавил момент, что в ответе в каждой строчке - 5 символов, я наивно полагал, что топикстартеру это принципиально. ААА!!!1Я ИДИОТ, УБЕЙТЕ МЕНЯ КТО-НИБУДЬ!!!1

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "Вопрос по bash"  +/
Сообщение от Pahanivo (ok) on 26-Июл-13, 08:04 
это просто какой-тааа бинарный мазахизм ...
Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

5. "Вопрос по bash"  +/
Сообщение от sn (??) on 26-Июл-13, 16:00 

> я добавил момент, что в ответе в каждой строчке - 5 символов,
> я наивно полагал, что топикстартеру это принципиально. ААА!!!1Я ИДИОТ, УБЕЙТЕ МЕНЯ
> КТО-НИБУДЬ!!!1

for i in `seq 0  32`;    do    echo "obase=2; $i" | bc | tr "01" "AB"; done
Так проще)

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

6. "Вопрос по bash"  +/
Сообщение от stereoPANDA (ok) on 26-Июл-13, 16:10 
>> я добавил момент, что в ответе в каждой строчке - 5 символов,
>> я наивно полагал, что топикстартеру это принципиально. ААА!!!1Я ИДИОТ, УБЕЙТЕ МЕНЯ
>> КТО-НИБУДЬ!!!1
> for i in `seq 0  32`;    do  
>   echo "obase=2; $i" | bc | tr "01" "AB";
> done
>  Так проще)

Читаем условие задачи, особенно это:
Вопрос - есть ли какой-то простой способ вывести результат в таком виде?
AAAAA
AAAAB

То есть, в выводе все поля должны содержать 5 символов.
Ваше блестящее решение этого не предусматривает, оно делает tr и всё.

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

7. "Вопрос по bash"  +/
Сообщение от Pahanivo (ok) on 26-Июл-13, 17:56 
>>> я добавил момент, что в ответе в каждой строчке - 5 символов,
>>> я наивно полагал, что топикстартеру это принципиально. ААА!!!1Я ИДИОТ, УБЕЙТЕ МЕНЯ
>>> КТО-НИБУДЬ!!!1
>> for i in `seq 0  32`;    do
>>   echo "obase=2; $i" | bc | tr "01" "AB";
>> done
>>  Так проще)
> Читаем условие задачи, особенно это:
> Вопрос - есть ли какой-то простой способ вывести результат в таком виде?

Вот как раз если внимательно читать условие, то как вы
1
10
11
100
101
и т.д.
выведите в указанном виде ))
100000 в таком виде уже не вывести ))


> AAAAA
> AAAAB
> То есть, в выводе все поля должны содержать 5 символов.
> Ваше блестящее решение этого не предусматривает, оно делает tr и всё.

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

8. "Вопрос по bash"  +/
Сообщение от Raven email(??) on 28-Июл-13, 11:20 
>[оверквотинг удален]
> 11
> 100
> 101
> и т.д.
> выведите в указанном виде ))
> 100000 в таком виде уже не вывести ))
>> AAAAA
>> AAAAB
>> То есть, в выводе все поля должны содержать 5 символов.
>> Ваше блестящее решение этого не предусматривает, оно делает tr и всё.

Наверное, моя вина, что я не полностью сформулировал задачу. Чтобы избежать споров, скажу, что нужно было только дописать нули в начало.


Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

9. "Вопрос по bash"  +/
Сообщение от михалыч (ok) on 29-Июл-13, 09:39 
>[оверквотинг удален]
>> 101
>> и т.д.
>> выведите в указанном виде ))
>> 100000 в таком виде уже не вывести ))
>>> AAAAA
>>> AAAAB
>>> То есть, в выводе все поля должны содержать 5 символов.
>>> Ваше блестящее решение этого не предусматривает, оно делает tr и всё.
> Наверное, моя вина, что я не полностью сформулировал задачу. Чтобы избежать споров,
> скажу, что нужно было только дописать нули в начало.

То есть, нужно было получить на выходе
00000
00001
00010
00011
00100
00101
00110
00111
01000
01001
01010
01011
01100
01101
01110
01111
10000
Так, что ли, если я правильно понял смысл последнего?
Ну так и спрашивайте, конкретно, а не окольными путями, а то народ вас не поймет. ))
Я дико извиняюсь за некоторый некрофилизм.))
Немного подправив вышеприведённые примеры, получим через логарифм такой полууниверсальный вариант:

#!/bin/sh
#(2,4,8,16,32,64... etc)
it=16
for i in $(seq 0 $it); do echo "obase=2; $i" | bc; done | awk '{lg=log('$it')/log(2)+1; printf "%0"lg"d\n", $0}'

справедливо для
obase=2  (bin)
если obase
obase=16 (hex)
obase=10 (dec)
obase=8  (oct)
то и основание логарифма нужно менять, с вытекающими отсюда..

Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

10. "Вопрос по bash"  +/
Сообщение от Аноним (??) on 29-Июл-13, 17:30 
>>[оверквотинг удален]

ППЦ!!!

_правильный_ ответ (в вмысле не рыбы но удочки) был дав во ___2___ посте.
И уже 33 поста - пелекдадывание яиц из левого кармана в правый и обратно.
Баб себе найдите придурки :)

Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру