команда:header=
sed -n '1p' l.txt ; footer=
sed -n '$p' l.txt;sed -e '1d' -e '$d' l.txt |awk '{if (!seen[$2]++)print $0}'| sed '1i '$header''| sed '$s/.*/&\n'$footer'/g'
выход
header=`sed -n '1p' l.txt`; footer=`sed -n '$p' l.txt`;sed -e '1d' -e '$d' l.txt |awk '{if (!seen[$2]++)print $0}'| sed '1i '$header''| sed '$s/.*/&\n'$footer'/g'
Header:0000000000000001457854500000
XP 12345678912yeyeyeyeeye 0000003
XP 12345678913yeyeyeyeeye 0000002
Footer:0000000000000001245856500004
По мере того, как предпочтения системных программистов менялись на протяжении десятилетий, менялись и места для сохранения различных типов файлов.Эти места обычно жестко -закодированы в программах и библиотеках. Вы не можете изменить это без переписывания многих/большинства/всех (потенциально тысяч )программ и библиотек, существующих в вашей системе. Если вы просто переместите файлы, ваша ОС сломается.
Если вы предпочитаете файловую структуру, похожую на MacOS, вам лучше начать с чего-то вроде Darwin, или вы можете выбрать одну из BSD (, которые имеют то же происхождение, что и MacOS ).
Потребуются существенные и постоянные усилия по впихиванию «типичного дистрибутива Linux» в файловую систему, подобную MacOS/BSD -. Вам пришлось бы загружать все исходники, переписывать большое их количество, компилировать и связывать их, и делать одно и то же каждый раз, когда вы хотите что-то обновить.
Если вы создаете очень-очень маленькую собственную Linux-систему с очень-очень ограниченным числом функций, (желательно одну ), тогда на нее может быть стоит потратить несколько недель/месяцев. сделать необходимое преобразование. Однако, если вам нужна система общего -назначения, забудьте об этом. Я сомневаюсь, что у кого-то на планете есть столько свободного времени, сколько нужно, чтобы хотя бы попытаться выполнить такую задачу.
Или... взгляните на GoboLinux (https://www.gobolinux.org/), в котором уже решена проблема "файлов, разбросанных повсюду". Может быть, их подход был бы «достаточно хорош» для вас?