В Linux, как бы вы отсортировали файл /etc /fstab по точке монтирования?

Я заинтересован в сортировке раздела fstab (независимо от того, смонтирован ли он в /x) таким образом, что родители монтируются перед его потомками

$ grep "[[:space:]]/x" fstab
/dev/mapper/lv1         /x/a/b                  ext4    defaults        0 0
/dev/mapper/lv2         /x/c                    ext4    defaults        0 0
/dev/mapper/lv3         /x                      ext4    defaults        0 0
/dev/mapper/lv4         /x/a                    ext4    defaults        0 0

"Очевидный" способ сделать это дает мне противоположный результат:

$ grep "[[:space:]]/x" fstab | sort fstab -k 2
/dev/mapper/lv1         /x/a/b                  ext4    defaults        0 0
/dev/mapper/lv4         /x/a                    ext4    defaults        0 0
/dev/mapper/lv2         /x/c                    ext4    defaults        0 0
/dev/mapper/lv3         /x                      ext4    defaults        0 0

Отмена других работ в некоторых случаях, но в других это не будет (не включая те, которые здесь, это может нарушить соглашения о неразглашении):

$ grep "[[:space:]]/x" fstab | sort fstab -k 2 -r
/dev/mapper/lv3         /x                      ext4    defaults        0 0
/dev/mapper/lv2         /x/c                    ext4    defaults        0 0
/dev/mapper/lv4         /x/a                    ext4    defaults        0 0
/dev/mapper/lv1         /x/a/b                  ext4    defaults        0 0

Я заметил, что это работает во всех других полях, кроме поля точки монтирования. Кроме того, я заметил, что если я отрублю все поля после точки монтирования, это будет работать как положено "

$ sort a -k 2
/dev/mapper/lv3         /x
/dev/mapper/lv4         /x/a
/dev/mapper/lv1         /x/a/b
/dev/mapper/lv2         /x/c

Как я могу достичь этого результата, не срезая поля?

Спасибо

1 ответ1

1

попробуй это :-)

$ grep "[[:space:]]/x" fstab | sort -k2,2
/dev/mapper/lv3         /x                      ext4    defaults        0 0
/dev/mapper/lv4         /x/a                    ext4    defaults        0 0
/dev/mapper/lv1         /x/a/b                  ext4    defaults        0 0
/dev/mapper/lv2         /x/c                    ext4    defaults        0 0
$ 

-k начальное поле, конечное поле - в противном случае -k2 означает начинать со столбца 2 до конца строки

вот и все.

Питер

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .