С небольшими изменениями, вы можете использовать решение которое я опубликовал на ваш другой вопрос.
Снова используя GNU sed и GNU awk и предполагая однородную структуру данных, используйте последний элемент как ключ сортировки:
# Separate input into records, here 3 lines each
sed '3~3G' infile |
# Use GNU awk's built-in sort, here index-string-descending
awk '
BEGIN { PROCINFO["sorted_in"] = "@ind_str_desc" }
{ h[$NF] = $0 }
END { for(k in h) print h[k] }
' RS= FS='[;\n]+'
Выход:
n2;m2;l2;
a2;b2;c2;
d2;e2;f2;g2
a1;b1;c1;
n1;m1;l1;
d1;e1;f1;g1
То, что вы сделали с первым креплением, перекрывает оригинал /proc
. Не удалять /tmp/test
, а размонтировать:
leap:~ # mount -o bind /tmp/test/ /proc/
leap:~ # mount | grep proc
mount: failed to read mtab: No such file or directory
leap:~ # umount /proc
leap:~ # mount | grep proc
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=23,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=13202)
Если вы удалили каталог перед размонтированием, вам придется перезагрузиться, я не уверен, но не думаю, что вы сможете перемонтировать /proc из этого состояния.
Чтобы избежать этого сообщения об ошибке, вам нужно сначала запустить другую команду:
root# mkdir /tmp/test && mount --bind /tmp/test/ /proc/
root# rm -rf /tmp/test
root# umount /proc/
root# mount -t proc proc /proc
Но вы, вероятно, начали с файловой системы proc
psuedo -, смонтированной на /proc
. В этом случае последняя команда покажет новое сообщение :
mount: /proc: proc already mounted on /proc
Вы можете избежать появления нового сообщения об ошибке, если дважды запуститеumount /proc/
перед повторной попыткой монтирования. Однако вы не говорите, почему вы хотите это сделать :-). Вероятно, вы хотите запустить только первые три команды выше :-). Затем вы можете продолжать использовать файловую систему /proc
как обычно.
Вам не разрешено запускать команды, которые вы пробовали (в Linux ). Причина в том, что после удаления каталога вам не разрешено использовать его в качестве каталога. Когда вы пытаетесь использовать удаленный каталог, Linux возвращает код ошибки ENOENT
. Описание этого кода ошибки: «Нет такого файла или каталога».
Технически код ошибки сбивает с толку, потому что технически каталог все еще существует. Но он подходит лучше, чем любой другой код ошибки :-).
# mkdir dir
# cd dir
# rmdir../dir
# mkdir subdir
mkdir: cannot create directory ‘subdir’: No such file or directory
Точно так же вам не разрешено монтировать файловую систему поверх удаленного каталога.
# mount --bind /proc.
mount:.: mount(2) system call failed: No such file or directory.
Я говорю, что каталог технически все еще существует, потому что у него все еще есть номер инода (, и в иноде все еще хранится отметка времени, режим разрешений и т. д.):
# ls -l -i -d.
5521426 drwxr-xr-x. 0 root root 0 Oct 18 13:09.
# chmod a-x.
# ls -l -d.
drw-r--r--. 0 root root 0 Oct 18 13:09.
Ваша команда mount
не напечатала общее описание кода ошибки :«Нет такого файла или каталога». Программа mount
пытается угадать, что именно могло вызвать код ошибки. К сожалению, это означает, что иногда он ошибается :-). Проблем с "проком специального устройства" не было. Проблема была в точке монтирования /proc
.