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.