Решение на perl:
$ perl -F"\t" -anle 'if($.==1){print; next} push @{$k{$F[0]}},@F[1..$#F];
END{print "$_\t" . join(";",@{$k{$_}}) for sort keys(%k)}' file
A B
123 fvv;kjf;ccd
567 abc;abc
879 ttt
Это может работать с произвольным количеством полей. Однако для этого требуется загрузить в память довольно много вещей, и это может стать проблемой, если ваш файл большой.
Что касается того, где вы ошиблись, мы не сможем сказать вам, пока вы не объясните, что на самом деле произошло, но, черт побери, ваша попытка perl потерпит неудачу, потому что:
-F,
, при котором в качестве разделителя полей используется запятая, если в поле ввода есть вкладки. -l
и напечатайте "foo \ n"
. -l
уже добавляет новую строку к каждому вызову печати, поэтому у вас будет несколько пустых строк. $ h {$ F [0]}. ",". $ F [1];
для добавления, поэтому при первом запуске и $ h {$ F [0]}
не определено, вы добавите дополнительные ,
в начало вашего сохраненного значения. Точно так же ваш awk
завершится ошибкой, потому что:
foo "" bar
, который объединит вывод без пробелов между полями. Вам нужно print foo, bar
, а также OFS = "\ t"
для вывода с разделением табуляцией. Для вашего варианта использования (разработка )я бы сказал, что /home
— это очень активный каталог r/w.
/srv
обычно не используется, если вы не хотите использовать его для разработки. Обычно туда помещаются серверные данные (веб-сайтов, файловые хранилища, возможно, базы данных sql и т. д. ).
/opt
обычно содержит дополнительные (фактически необязательные )приложения, которые нельзя установить с помощью менеджера пакетов вашего дистрибутива.
/dev
, /tmp
, /run
, чаще всего чаще всего настраиваются как виртуальные, только ОЗУ -, файловые -системы (tmpfs )в большинстве основных дистрибутивов Linux.
/proc
и /sys
действительно всегда виртуальны в -файловых -системах ядра.
/mnt
— это в основном каталог для временного ручного монтирования, и он почти никогда не используется в настольных системах, так как его чаще заменяют /media
, который, по сути, обычно не нужно беспокоиться о том, чтобы занять какое-либо место или Пропускная способность ввода-вывода любого из ваших твердотельных накопителей, потому что каталоги там на самом деле просто точки монтирования -для съемных носителей.
/lost+found
— это даже не файловая -система как таковая -, это скорее каталог обслуживания, характерный для каждой смонтированной файловой -системы ext[234].
Наконец, рассмотрите возможность использования параметра монтирования noatime
по крайней мере для всех файловых -систем, содержащих файлы ОС, или, в любом случае, в основном для -читаемых файлов, таких как /bin
, /usr
, /boot
, /lib
. ]. Вы теряете обновление времени доступа к файлам в нем, но вы увеличиваете скорость и в SSD без-деградации с течением времени.
ХТХ