Está faltando uma versão sed pura! Isso fará:
sed 'x;G;s/\(.*\)\n$/+/;/\n/d;h;s/^+\{2\}//;/^+/d' file
Substitua o 2 por 29 por 30 linhas consecutivas. Eu me pergunto se isso pode ser otimizado de alguma forma.
Como funciona: No espaço de espera, a linha anterior é mantida, com um + para cada ocorrência adicional. Agora, para cada linha, o x troca os buffers, portanto, a linha atual está no espaço de armazenamento. O G anexa o espaço de espera, portanto, no espaço de padrão, temos a linha antiga e a nova, separadas por uma nova linha. Agora, se a linha aparecer antes e depois da nova linha, teremos duas linhas idênticas e o comando s substituirá uma delas pela nova linha por + . Se ainda houver uma nova linha no padrão, as linhas serão diferentes e poderemos iniciar um novo ciclo ( /\n/d ). Caso contrário, copie a linha modificada para o espaço de espera para coletar o + . Por fim, remova quantas + as linhas forem necessárias (menos um). Se ainda houver um + líder, teríamos linhas demais ou não suficientes, então d elete.