LINUX.ORG.RU

переворот таблицы в bash

 ,


0

1

Добрый день. Есть две строки:

ййй ууу ккк еее ....

и

апвыа авпвап орорп gdfg .....

Как вывести их в таком формате в столбец:

ййй: апвыа
ууу: авпвап
ккк: орорп
еее: gdfg
...

?

Как два массива перебрать одновременно в цикле? Туплю чот.

$ cat bin/bash.test.sh 
#!/bin/bash
#

a=(q w e r t y)
b=(a s d f g h)

echo ${a[*]}
echo ${b[*]}

for i in {0..5} ; do
    echo ${a[$i]} ${b[$i]}
done

exit 0


$ bash.test.sh
q w e r t y
a s d f g h
q a
w s
e d
r f
t g
y h
sin_a ★★★★★
()
Ответ на: комментарий от sin_a

Спасибо. Количество элементов строки неизвестно. Число элементов одной строки равно числу элементов другой строки.

rusya_rr
() автор топика
Ответ на: комментарий от alozovskoy

Спасибо. Эту конструкцию и использовал.

rusya_rr
() автор топика
Ответ на: комментарий от rusya_rr

зато однострочник можно соорудить

awk 'NR == 1 {split($0,a)}; NR==2 {for (i=1; i<=NF; i++) {print a[i]":",$i}}' input.txt

ййй: апвыа
ууу: авпвап
ккк: орорп
еее: gdfg

sdio ★★★★★
()

sed

$ cat /tmp/[12] | sed -rn 'N;:l;h;s/^(\S+)\s+.*\n(\S+).*/\1: \2/p;g;tm;:m;s/^\S+\s+(.*)\n\S+\s+(.*)/\1\n\2/;tl;s/(\S+)\n(\S+)/\1: \2/p'
ййй: апвыа
ууу: авпвап
ккк: орорп
еее: gdfg
....: .....

строки в файлах /tmp/1 и /tmp/2

emulek
()
print(list(zip(*[i.split()for i in open('test',encoding='cp1251').readlines()])))
anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.