LINUX.ORG.RU

Как в потоке поменять местами строки и столбцы

 ,


0

4

Доброго времени! Есть задача поменять местами строки и столбцы. Имеем вывод скрипта: ИМЯ_ТАБЛИЦЫ_1 \n |ПОЛЕ_1|ПОЛЕ_2|....|ПОЛЕ_n| \n < значение_1,значение_2,....,значение_n > \n

ИМЯ_ТАБЛИЦЫ_2 \n |ПОЛЕ_1|ПОЛЕ_2|....|ПОЛЕ_n| \n < значение_1,значение_2,....,значение_n > \n .... ИМЯ_ТАБЛИЦЫ_7 \n |ПОЛЕ_1|ПОЛЕ_2|....|ПОЛЕ_n| \n < значение_1,значение_2,....,значение_n > \n

хотелось бы видеть: ИМЯ_ТАБЛИЦЫ_1 ... ИМЯ_ТАБЛИЦЫ_7 \n ПОЛЕ_1 | значение_1 ... ПОЛЕ_1 | значение_1 \n ПОЛЕ_2 | значение_2 ... ПОЛЕ_2 | значение_2 \n ПОЛЕ_3 | значение_3 ... ПОЛЕ_3 | значение_3 \n ... ... ПОЛЕ_n | значение_n ... ПОЛЕ_n | значение_n \n

Количество полей в разных таблицах - НЕ одинаковое.

заранее спасибо

Данные разных таблиц свести в одну и транспонировать, чтоли?

Если тебе надо обработать весь входной поток в том виде, как ты его тут показал (когда все таблицы с разными полями идут одна за другой), на awk тебе потребуется:

  • простенький автомат, чтобы различать переходы от одной таблицы к другой, например по NF==1
  • массив всех имён таблиц
  • массив всех имен полей
  • многомерный массив (таблица->поле) -> значение

Заполняешь массивы в одном проходе, потом в END {} пробегаешься по ним и выводишь в нужном порядке.

yoghurt ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.