Как использовать сценарий оболочки для преобразования строки в столбец или какую-нибудь красивую таблицу

Я получил следующий скрипт от переполнение стека:

#!/bin/sh

in_file=temp2.txt   # Input file
params=6            # Parameters count
res_file=$(mktemp)  # Temporary file
sep=' '             # Separator character

# Print header
cnt=0
for i in $(cat $in_file | head -$((params*2))); do
    if [ $((cnt % 2)) -eq 0 ]; then
        echo $i
    fi
    cnt=$((cnt+1))
done | sed ":a;N;\$!ba;s/\n/$sep/g" >>$res_file

# Parse and print values
cnt=0
for i in $(cat $in_file); do
    # Print values, skip param names
    if [ $((cnt % 2)) -eq 1 ]; then
        echo -n $i >>$res_file
    fi

    if [ $(((cnt+1) % (params*2))) -eq 0 ]; then
        # Values line is finished, print newline
        echo >>$res_file
    elif [ $((cnt % 2)) -eq 1 ]; then
        # More values expected to be printed on this line
        echo -n "$sep" >>$res_file
    fi

    cnt=$((cnt+1))
done

# Make nice table format
cat $res_file | column -t
#rm -f $res_file

Но тогда у меня около 100+ строк, и я получаю сообщение об ошибке ** "столбец: слишком длинная строка" **, как показано ниже:

****column: line too long**** GigabitEthernet0/0 GigabitEthernet1/0/3 GigabitEthernet1/0/5 GigabitEthernet1/0/10 GigabitEthernet1/0/19 GigabitEthernet1/0/33 GigabitEthernet1/0/2
GigabitEthernet1/0/4 GigabitEthernet1/0/7 GigabitEthernet1/0/18 GigabitEthernet1/0/30 GigabitEthernet1/0/44 GigabitEthernet1/0/46 GigabitEthernet1/1/3 GigabitEthernet2/0/1 GigabitEthernet2/0/5
GigabitEthernet2/0/9 GigabitEthernet2/0/14 GigabitEthernet2/0/18 GigabitEthernet2/0/31 GigabitEthernet2/0/34 GigabitEthernet2/0/36 GigabitEthernet2/0/40 GigabitEthernet2/1/3 GigabitEthernet3/0/12 GigabitEthernet3/0/30 GigabitEthernet3/0/32 GigabitEthernet3/0/34 GigabitEthernet3/0/36 GigabitEthernet3/0/38 GigabitEthernet3/0/40 GigabitEthernet3/0/42 GigabitEthernet3/0/44 GigabitEthernet3/0/46 GigabitEthernet3/0/48 GigabitEthernet3/1/2

Любые решения, которые вы можете дать, я не смог снова найти здесь автора этого сценария, чтобы спросить его об этом, можно избежать.

Входной файл будет примерно таким:

{ GigabitEthernet0 / 0 GigabitEthernet1 / 0/2 GigabitEthernet1 / 0/3 GigabitEthernet1 / 0/4 GigabitEthernet1 / 0/5 GigabitEthernet1 / 0/7 GigabitEthernet1 / 0/10 GigabitEthernet1 / 0/18 GigabitEthernet1 / 0/19 GigabitEthernet1 / 0/30 GigabitEthernet1 / 0/33 GigabitEthernet1 / 0/44 GigabitEthernet1 / 0/45 GigabitEthernet1 / 0/46 Гигабитный Ethernet1 / 1/2 Гигабитный Ethernet1 / 1/3 GigabitEthernet1 / 1/4 GigabitEthernet2 / 0/1 GigabitEthernet2 / 0/2 GigabitEthernet2 / 0/5 GigabitEthernet2 / 0/8 GigabitEthernet2 / 0/9 GigabitEthernet2 / 0/12 GigabitEthernet2 / 0/14 GigabitEthernet2 / 0/15 GigabitEthernet2 / 0/18 GigabitEthernet2 / 0/22 GigabitEthernet2 / 0/31 GigabitEthernet2 / 0/33 GigabitEthernet2 / 0/34 GigabitEthernet2 / 0/35 GigabitEthernet2 / 0/36 GigabitEthernet2 / 0/38 GigabitEthernet2 / 0/40 GigabitEthernet2 / 1/2 GigabitEthernet2 / 1/3 GigabitEthernet2 / 1/4 GigabitEthernet3 / 0/12 GigabitEthernet3 / 0/23 GigabitEthernet3 / 0/30 GigabitEthernet3 / 0/31 GigabitEthernet3 / 0/32 GigabitEthernet3 / 0/33 GigabitEthernet3 / 0/34 GigabitEthernet3 / 0/35 GigabitEthernet3 / 0/36 GigabitEthernet3 / 0/37 GigabitEthernet3 / 0/38 GigabitEthernet3 / 0/39 GigabitEthernet3 / 0/40 GigabitEthernet3 / 0/41 GigabitEthernet3 / 0/42 GigabitEthernet3 / 0/43 GigabitEthernet3 / 0/44 GigabitEthernet3 / 0/45 GigabitEthernet3 / 0/46 GigabitEthernet3 / 0/47 GigabitEthernet3 / 0/48 Гигабитный Ethernet3 / 1/1 Гигабитный Ethernet3 / 1/2 Гигабитный Ethernet3 / 1/3 Гигабитный Ethernet3 / 1/4 }

Вывод мне нужен примерно такой:

{ GigabitEthernet0 / 0 | GigabitEthernet1 / 0/33 | GigabitEthernet1 / 0/2 | GigabitEthernet1 / 0/44 | GigabitEthernet1 / 0/3 | GigabitEthernet1 / 0/43 | GigabitEthernet1 / 0/4 | GigabitEthernet1 / 0/46 | GigabitEthernet1 / 0/5 | GigabitEthernet1 / 1/2 | GigabitEthernet1 / 0/7 | GigabitEthernet1 / 1/3 | GigabitEthernet1 / 0/10 | GigabitEthernet1 / 1/4 | GigabitEthernet1 / 0/18 | GigabitEthernet2 / 0/1 | GigabitEthernet1 / 0/19 | GigabitEthernet2 / 0/2 | GigabitEthernet1 / 0/30 | GigabitEthernet2 / 0/5 | }

Обновите свой вопрос, указав входной файл и ожидаемый результат.

oliv 17.08.2018 13:09

Это сценарий ужасающий.

tripleee 17.08.2018 14:07

Возможно, мне придется согласиться с трипли по этому поводу. Конечно с оливком. Пожалуйста, покажите примеры желаемого входа и выхода. Я почти уверен, что мы можем добиться большего успеха, чем это. :)

Paul Hodges 17.08.2018 15:40
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
3
51
1

Ответы 1

Я решил эту проблему с помощью команды столбца.

он просто публикует вывод примерно так

column vacant_temp4.txt GigabitEthernet1/0/1 GigabitEthernet1/0/48 GigabitEthernet2/0/34 GigabitEthernet3/0/44 GigabitEthernet4/0/28 GigabitEthernet1/0/2 GigabitEthernet1/1/2 GigabitEthernet2/0/35 GigabitEthernet3/1/1 GigabitEthernet4/0/29 GigabitEthernet1/0/3 GigabitEthernet1/1/3 GigabitEthernet2/0/36 GigabitEthernet3/1/2 GigabitEthernet4/0/30 GigabitEthernet1/0/5 GigabitEthernet1/1/4 GigabitEthernet2/0/38 GigabitEthernet3/1/3 GigabitEthernet4/0/31 GigabitEthernet1/0/7 GigabitEthernet2/0/1 GigabitEthernet2/0/45 GigabitEthernet3/1/4 GigabitEthernet4/0/32 GigabitEthernet1/0/8 GigabitEthernet2/0/5 GigabitEthernet2/1/2 GigabitEthernet4/0/1 GigabitEthernet4/0/33 GigabitEthernet1/0/9 GigabitEthernet2/0/8 GigabitEthernet2/1/3 GigabitEthernet4/0/5 GigabitEthernet4/0/34 GigabitEthernet1/0/14 GigabitEthernet2/0/9 GigabitEthernet2/1/4 GigabitEthernet4/0/6 GigabitEthernet4/0/35 GigabitEthernet1/0/16 GigabitEthernet2/0/10 GigabitEthernet3/0/2 GigabitEthernet4/0/9 GigabitEthernet4/0/36 GigabitEthernet1/0/19 GigabitEthernet2/0/13 GigabitEthernet3/0/5 GigabitEthernet4/0/12 GigabitEthernet4/0/37 GigabitEthernet1/0/20 GigabitEthernet2/0/14 GigabitEthernet3/0/7 GigabitEthernet4/0/13 GigabitEthernet4/0/38 GigabitEthernet1/0/26 GigabitEthernet2/0/16 GigabitEthernet3/0/13 GigabitEthernet4/0/16 GigabitEthernet4/0/39 GigabitEthernet1/0/27 GigabitEthernet2/0/20 GigabitEthernet3/0/16 GigabitEthernet4/0/17 GigabitEthernet4/0/40 GigabitEthernet1/0/28 GigabitEthernet2/0/21 GigabitEthernet3/0/19 GigabitEthernet4/0/18 GigabitEthernet4/0/41 GigabitEthernet1/0/30 GigabitEthernet2/0/25 GigabitEthernet3/0/22 GigabitEthernet4/0/19 GigabitEthernet4/0/42 GigabitEthernet1/0/31 GigabitEthernet2/0/26 GigabitEthernet3/0/25 GigabitEthernet4/0/20 GigabitEthernet4/1/1 GigabitEthernet1/0/35 GigabitEthernet2/0/27 GigabitEthernet3/0/26 GigabitEthernet4/0/21 GigabitEthernet4/1/2 GigabitEthernet1/0/36 GigabitEthernet2/0/28 GigabitEthernet3/0/27 GigabitEthernet4/0/22 GigabitEthernet4/1/3 GigabitEthernet1/0/37 GigabitEthernet2/0/29 GigabitEthernet3/0/37 GigabitEthernet4/0/23 GigabitEthernet4/1/4 GigabitEthernet1/0/40 GigabitEthernet2/0/30 GigabitEthernet3/0/39 GigabitEthernet4/0/24 GigabitEthernet1/0/45 GigabitEthernet2/0/31 GigabitEthernet3/0/41 GigabitEthernet4/0/26 GigabitEthernet1/0/46 GigabitEthernet2/0/32 GigabitEthernet3/0/42 GigabitEthernet4/0/27 Это выглядело лучше, чем то, что вы видели выше на моем экране замазки.

Спасибо, Оли, Трипли, Пол и все.

Другие вопросы по теме