Linux: classifique o / etc / fstab pelo campo mountpoint

0

No linux, como você classificaria o arquivo / etc / fstab pelo mountpoint?

Estou interessado em classificar uma seção do fstab (o que estiver montado em / x) de modo que os pais sejam montados antes de seus filhos

$ 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

A maneira "óbvia" de fazer isso é me dar o resultado oposto:

$ 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

Revertendo os outros trabalhos em alguns casos, mas em outros não (não incluindo aqueles aqui, pode violar acordos de não divulgação):

$ 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

Eu notei que funciona em todos os outros campos, exceto no campo mountpoint. Além disso, notei que se eu cortar todos os campos após o ponto de montagem, ele funcionará como esperado "

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

Como posso alcançar este resultado sem cortar os campos?

Obrigado

    
por Diego Puertas 12.06.2014 / 19:28

1 resposta

1

tente isto: -)

$ 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 startfield, endfield - caso contrário, -k2 significa iniciar com a coluna2 até o final da linha

é isso.

Peter

    
por 12.06.2014 / 21:29