Vou tentar ...
Isso retornará todas as linhas até a última ocorrência de /
ou /usr
. AKA isso tira tudo depois da última ocorrência de qualquer um deles.
:a;/^[^ ]* \(\/\|\/usr\) /!{H;n;ba};
Isso indica que, para linhas que não contêm exatamente /
ou /usr
na segunda coluna (delimitado por espaço em branco), acrescente H
old space, busque n
ext linha, loop b
ack para rotular a
.
{H;s/.*//;x;s/\n//;p}
Só chegaremos aqui se encontrarmos uma linha com /
ou /usr
. Em seguida, anexamos a H
old space (que tem tudo desde a primeira seção), clear pattern space, e x
change espaço com espaço padrão, remove primeiro newline do espaço padrão e p
rint it.
Depois de vermos a última linha /
ou /usr
(e já imprimimos tudo até esse ponto), passamos a primeira parte e sugamos todas as linhas não correspondentes restantes ... mas eles nunca são impressos, já que não entramos na segunda parte.
Eu fiz um pouco de testes e isso foi consistente com a minha afirmação.
É evidente que isso depende de algum tipo de pedido sendo mantido em /proc/mounts
. Mas a lista é simplesmente criada de acordo com a ordem em que os pontos de montagem são criados . Então, onde quer que isso seja feito, deve ser mantido ou essa coisa vai quebrar, eu acho. Tudo parece terrivelmente frágil para mim.