Monitorar / acompanhar alterações / atualizações de arquivos CSV em uma visualização / formato tabular

0

Eu quero monitorar / acompanhar as alterações de um arquivo CSV (alguma saída de registro de um robô). É um arquivo enorme com <TAB> como delimitador e a primeira linha com informações de cabeçalho.

Até agora, estou usando a saída de tail - f <file.csv> , mas ela não está formatada por coluna e se parece com:

yAccelRaw       zAccelRaw       xGyroRaw    ... ... ...
3       256     1   ... ... ...
4       255     3   ... ... ... 
4       255     -6  ... ... ...
3       253     -1  ... ... ...
4       254     2   ... ... ...
5       255     0   ... ... ...
4       255     3   ... ... ...
5       254     3   ... ... ...
5       253     -1  ... ... ...
4       255     3   ... ... ...

Com um CSV com 30 ou mais colunas, entender qual valor pertence a qual coluna não é realmente fácil. Eu estava vagando se houvesse uma solução geral para imprimir a saída formatada como tabela?

Até agora, uso tail -f <file.csv> | cut -f5,6 para recortar colunas específicas e observar sua saída, mas prefiro a visão geral completa. Além disso, tentei canalizar o resultado para column , que não é atualizado.

    
por Marcus 28.06.2017 / 18:16

2 respostas

1

Você poderia usar, por exemplo, awk para capturar os cabeçalhos na primeira linha e repeti-los a cada 10 linhas, e reduzir o tamanho da coluna para dizer no máximo 5 caracteres com algo assim:

tail -n +1 -f file.csv |
awk  'NR==1 { n=split($0,hdr) }
NR%10==1    { for(i=1;i<=n;i++)printf "%5.5s ",hdr[i];printf "\n" }
            { for(i=1;i<=n;i++)printf "%5.5s ",$i;printf "\n" }
'

Isso daria algo parecido com

yAcce zAcce xGyro ...
    3   256     1 ...
    4   255     3 ... 
    4   255    -6 ...
    3   253    -1 ...
    4   254     2 ...
    5   255     0 ...
    4   255     3 ...
    5   254     3 ...
    5   253    -1 ...
    4   255     3 ...
yAcce zAcce xGyro ...
    3   256     1 ...
...

Se a largura ainda for muito grande para caber no seu terminal, você pode canalizar o resultado em less -S +F , o que o faz agir como tail -f , mas permite rolar para a esquerda e direita com as setas se você pausar a cauda com Control-C. Para continuar seguindo o tipo F .

    
por 28.06.2017 / 19:46
0

Coluna faz exatamente o que você está pedindo. Você pode identificar a guia como o separador com um argumento. Por que a tubulação não é uma opção aqui? cat <file.csv> | column -s "\t"

    
por 28.06.2017 / 19:34