The OpenNET Project / Index page

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



Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (Shell скрипты)
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Вывод данных из скрипта в несколько столбцов, Tendro (?), 15-Дек-15, (0) [смотреть все]

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


5. "Вывод данных из скрипта в несколько столбцов"  +/
Сообщение от pavlinux (ok), 15-Дек-15, 17:11 
>> Возможно ли такое сделать?
> Если кто будет спрашивать, скажи я разрешил:
> seq 30 |column -c40
> printf '%20s\n%-20s\n' {1..30} |column -c50

Читер! Давай на баше!

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

6. "Вывод данных из скрипта в несколько столбцов"  +/
Сообщение от universite (ok), 15-Дек-15, 17:55 
>>> Возможно ли такое сделать?
>> Если кто будет спрашивать, скажи я разрешил:
>> seq 30 |column -c40
>> printf '%20s\n%-20s\n' {1..30} |column -c50
> Читер! Давай на баше!

Предложи свой вариант на awk :)

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

7. "Вывод данных из скрипта в несколько столбцов"  +/
Сообщение от pavlinux (ok), 15-Дек-15, 18:16 
>>>> Возможно ли такое сделать?
>>> column -c50
>> Читер! Давай на баше!
> Предложи свой вариант на awk :)


cat test.txt | awk '{A[i++]=$0;LINE=5;COL=3} END { for (j=0;j< (NR/COL-1);++j) print A[j]" "A[j+LINE]" "A[j+2*LINE];}'

1_1 OK 2_1 OK 3_1 OK
1_2 OK 2_2 BAD 3_2 OK
1_3 OK 2_3 BAD 3_3 OK
1_4 BAD 2_4 OK 3_4 OK
1_5 OK 2_5 OK 3_5 OK

...


#!/bin/bash

l=5;c=3;array=($(cat test.txt));
for ((i=0; i<${#array[@]}/$l;i++)); do
   for ((k=0; k<${#array[@]}/$c;k++)); do
        printf '%s %s | %s %s | %s %s\n' \
        ${array[$k]} ${array[$((k+l))]} \
        ${array[$((k+i*l))]} ${array[$((k+i*l+1))]} \
        ${array[$((k+(i+1)*l))]} ${array[$((k+(i+1)*l+1))]};
done;done

Чот баш не пошёл, пальцы запутались в скобках %)

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

8. "Вывод данных из скрипта в несколько столбцов"  +/
Сообщение от pavlinux (ok), 15-Дек-15, 19:17 
 
cat test.txt|awk '{A[i++]=$0;LINE=5;COL=3} END {for (j=0;j<(NR/COL-1);++j) print "| "A[j]" | "A[j+LINE]" | "A[j+2*LINE]" |";}'|column -t;

|  1_1  OK   |  2_1  OK   |  3_1  OK  |
|  1_2  OK   |  2_2  BAD  |  3_2  OK  |
|  1_3  OK   |  2_3  BAD  |  3_3  OK  |
|  1_4  BAD  |  2_4  OK   |  3_4  OK  |
|  1_5  OK   |  2_5  OK   |  3_5  OK  |

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

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

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




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

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