Последние несколько дней я охотился за набором инструментов командной строки, Perl или awk-скриптом, который позволяет мне очень быстро транспонировать следующие данные:
Row|Col|Val
1|A|foo
1|B|bar
1|C|I have a real
2|A|bad
2|C|hangover
в это:
A|B|C
foo|bar|I have a real
bad||hangover
Обратите внимание, что в наборе данных есть только одно значение для каждой "ячейки" (т. Е., Как и в электронной таблице, дубликатов строки "1", столбца "A") не существует *
Я пробовал различные реализации оболочки awk для транспонирования данных, но не могу заставить их работать. У меня была одна идея - вырезать каждое значение «Col» в отдельный файл, а затем использовать командную строку «join», чтобы соединить их обратно «Row» - но ОБЯЗАТЕЛЬНО должен быть более простой способ. Я уверен, что это невероятно просто сделать, но я немного борюсь.
Мои входные файлы имеют Cols от A до G (в основном включая строки переменной длины) и 10000 строк. Если бы я мог избежать загрузки всего в память, это было бы огромным плюсом.
Пиво по почте для всех, кто получил ответ!
Как всегда - большое спасибо заранее за вашу помощь.
Приветствия
Джош
p.s. - Я немного удивлен, что нет встроенной утилиты командной строки для выполнения этого базового типа операции поворота / транспонирования. Я посмотрел на http://code.google.com/p/openpivot/ и http://code.google.com/p/crush-tools/, оба из которых, кажется, требуют совокупных вычислений.