Образец умножения - седь? - PullRequest
1 голос
/ 26 декабря 2011

У меня есть такие строки

0 1 1

Я бы хотел умножить его, скажем, на 2 или 4, чтобы получить этот шаблон

0 0 0 01 1 1 1 1 1 1 1

Теперь у меня есть кусок старого кода, который в основном делает это в случае умножения на 5.

Но я не могу преобразовать этот скрипт внапример 2 или 4 раза ...

Может кто-нибудь помочь мне разобраться?

Вот код:

sed -e 's/\([01]\)/\1\1\1\1/7g ; s/\([01]\{2,\}\)/\1\1\1/g ; s/\b\([01]\)\b/\1\1\1\1\1/g ; s/\([01]\)\B/\1 /g'

Ответы [ 3 ]

0 голосов
/ 26 декабря 2011

используя sed повторить 4 раза:

kent$  echo "0 1 1
1 1 0"|sed 's/[01]/& & & &/g' 

0 0 0 0 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 0 0 0 0

с помощью awk, вы можете указать время, которое вы хотите повторить, в качестве параметра: например, повторить 5 раз:

kent$  echo "0 1 1
dquote> 1 1 0"|awk -v t=5 '{f=1;while(f<=NF){ n=1;while(n<=t){printf "%s ",$f;n++;}f++;} print "";}' 

0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 
1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 
0 голосов
/ 26 декабря 2011

Это может работать для вас:

echo -e '0 1 1\n1 1 1 0 0' | sed "s/\S/$(echo {1..4}| sed 's/\S*/\&/g')/g"
0 0 0 0 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0

Это обеспечивает решение OTT, но оно программируемое, т. Е. Измените 4 на любое значение, на которое вы хотите умножить.

0 голосов
/ 26 декабря 2011
$ echo '0 1 1' | sed -r 's/\S/& & & & &/g'
0 0 0 0 0 1 1 1 1 1 1 1 1 1 1
...