O problema é que top
, por padrão, inclui códigos de escape ANSI / VT100. Neste caso, parece que o que você quer é apenas a saída de texto "bruto" (ou seja, não a informação de que algum texto deve ser em negrito, etc etc). Felizmente, top
tem suporte embutido para esse modo de operação, chamado "modo em lote" em sua documentação.
Na primeira página do manual ( man top
):
-n : Number of iterations limit as: -n number
Specifies the maximum number of iterations, or frames, top should
produce before ending.
-b : Batch mode operation
Starts top in 'Batch mode', which could be useful for sending output
from top to other programs or to a file. In this mode, top will not
accept input and runs until the iterations limit you've set with
the '-n' command-line option or until killed.
Então ...
top -n 1 -b > top.out
Para outros utilitários de linha de comando que não têm um switch tipo "-b" conveniente como o top, também pode ser feito com ansifilter . Baixe, compile e instale. Então você poderia ...
top -n 1 | ansifilter > top.out