Описание тега google-backup
Perl может сделать это сподручно, используя хэш:
#!/usr/Бен/ОКР на Perl
использовать строгие;
использование предупреждений;
мой %вещество;
мой заголовка @ = сплит ' ', <>;
#прочитать данные в "хлам"
в то время как ( <> ) {
мой ( $ключ, $значение ) = раскол;
метод push ( @{$материалов${ключ}}, $значение );
}
печать присоединиться ("\Т", @заголовок ),"\п";
еогеасп мой $Key ( ключи сортировки %вещество ) {
печатать $ключ, "\Т" присоединиться ";", @{$материалов${ключ}},"\п";
}
Выход:
Б
123 фвв;когда;ГТД;
567 АВС;АВС;
879 ттт;
Где вы пошло не так? Честно говоря, я бы предложил это в попытке сжать все в один лайнер. То есть - на мой взгляд - очень плохая практика. В лучшем случае, это способствует неисповедимы код, который трудно следовать.
Вышеуказанное может быть сокращенной, но это действительно платит, чтобы сделать это письмо первым.
Для того, чтобы поддерживать несколько столбцов, тогда вы начинаете биться небольшая неприятность с ширины столбцов.
Это работает, но выдает результат, отступы и не аккуратно выравнивается:
#!/usr/Бен/ОКР на Perl
использовать строгие;
использование предупреждений;
мой %вещество;
мой ( $идентификатора, заголовка@) = сплит ' ', <>;
в то время как ( <> ) {
мой ( $ключ, @ценностей ) = раскол;
мой %строк;
@строк {заголовка@} = @ценностей;
метод push ( @{$штука{$ключ}{$_}}, $строки{$_} ) для ключей %строк;
}
присоединяйтесь к печати ( "\Т", $ИД @заголовок),"\п";
еогеасп мой $Key ( ключи сортировки %вещество ) {
присоединяйтесь к печати ("\Т", $ключ, карту { присоединиться ";", @{$штука{$ключ}{$_}}} @заголовок), "\п";
}
Вывод:
А Б В
123 фвв;когда;ПЗС-ггг;ггг;АТТ
Азбука 567;Азбука ГСТ;хагат
879 ттт тыт
Если вкладка разделение не подходит для ваших нужд, вы можете использовать команду
выполнить форматирование:
мой $формат = '%12С';
карта печати { функции sprintf($формат $_) } ( $идентификатор, заголовок,@),"\п";
еогеасп мой $Key ( ключи сортировки %вещество ) {
карта печати { функции sprintf($формат $_) } ( $ключ, карту { присоединиться ";", @{$штука{$ключ}{$_}}} @заголовок),"\п";
}
Мы делаем некоторые используют карту
здесь, который я ценю не совсем очевидная вещь.
Что она делает, это взять список, и применить преобразования к каждому элементу. Так в приведенном выше примере:
печать присоединиться ("\г", на карте { присоединиться ";", @$_ } ([1,2,3],[4,5,6],[7,8,9]) )
Будет генерировать:
1;2;3 4;5;6 7;8;9
На карте
операция сказав присоединиться каждый подмассив на ;', а затем вернуться, что в списке... что мы можем тогда присоединиться к вкладке. Это в основном то, что выше делает.