Isso não é exatamente o que você pediu, mas eis o que eu faço:
Canalize a saída em less
com a opção -S
(linhas longas):
my_command_that_outputs_tables | less -S
Em seguida, dentro do visualizador less
, as teclas de cursor para a esquerda / para a direita "rolam" para a esquerda e para a direita pelos seus dados, mais ou menos uma página por vez. Bata q
para sair ou ?
para ajuda.
E aqui está como fazer o que você quer:
my_command_that_outputs_tables | expand | tee >(cut -c1-79) >(sleep 1; cut -c80-159) | {sleep 2; cut -c160-}
Este exemplo é para dados com até três telas de 80 colunas de largura, com paradas de tabulação de 8 espaços.
-
expand
converte guias em espaços. Sem esses dados com guias, não caberia no terminal. -
tee
duplica os dados em três fluxos idênticos, neste caso; dois como "arquivos", um como stdout. Você pode adicionar quantas saídas "arquivo" quiser. -
>(...)
é a sintaxe bash para tratar um arquivo de saída como se fosse um pipe. -
sleep 1
esleep 2
são atrasos que fazem as páginas saírem na ordem correta. Isso é um pouco complicado; pode haver uma maneira melhor. -
cut -cM-N
retira uma fatia vertical da entrada.M
é a primeira coluna, contada a partir de 1 eN
é a última coluna. SeN
for omitido, ele levará todos os caracteres até o final da linha.
Então, ele pega seus dados, duplica-os em três fluxos e, em seguida, divide cada fluxo verticalmente.