Existe uma planilha em modo texto em Unix chamada sc
que pode funcionar para o seu uso. Você provavelmente precisará passar o arquivo através de psc
para convertê-lo para o formato de arquivo que sc
usa.
Eu trabalho com muitos arquivos de dados delimitados por tabulação, com colunas variadas de tamanho incerto.
Normalmente, a maneira como as pessoas visualizam esses arquivos é removê-los do servidor para sua máquina Windows ou Mac e, em seguida, abri-los no Excel. Isto é certamente cheio de recursos, permitindo filtragem e outras opções agradáveis. Mas às vezes, você só quer ver algo rapidamente na linha de comando.
Eu escrevi um utilitário bare-bones para exibir as primeiras <n>
linhas de um arquivo da seguinte forma:
--- linha 1 ---
1: {header-1} 2: {header-2} 3: ...
--- linha 2 ---
1: {data-1} 2: {data-2} 3: ...
Isto é, obviamente, muito ruim, mas é suficiente para canalizar através do grep, ou descobrir quais colunas de cabeçalho usar "cut -f".
Existe um visualizador baseado em * nix para uma sessão de terminal que exibirá linhas e colunas de um arquivo delimitado por tabulação e permitirá que você mova a janela de visualização sobre o arquivo, ou veja os dados?
Eu não quero escrever isso sozinho; em vez disso, eu criaria um reformatador que substituiria as guias por espaços para preenchimento, de modo que eu pudesse abrir o arquivo no emacs e ver as colunas alinhadas. Mas se já existe uma ferramenta para fazer algo assim, seria ótimo!
(Ou, eu poderia apenas viver com o Excel.)
Isso funciona para produzir uma versão impressa bonita de um arquivo delimitado por tabulações
column -t -s $'\t' list-of-entries.txt
Abra o arquivo no vim e defina a parada de tabulação para algo alto, para que as colunas fiquem alinhadas. Se você não está familiarizado com o vim, primeiro inicie:
vim some_file.csv
Em seguida, defina a parada de tabulação para algum valor alto, para que as colunas sejam alinhadas. Tipo:
:set tabstop=20
Se as linhas ficarem muito longas, você também deve desativar a disposição. Assim, você pode rolar para os lados em vez de envolver o texto:
:set nowrap
Movendo-se: existem várias maneiras, mas as mais simples, como setas e pgup / pgdown / home / end, funcionam. Alguns outros comandos de movimento úteis:
CTRL+U: move half screen up
CTRL+D: move half screen down
gg: move to top
G: move to bottom
Você pode pesquisar texto da mesma maneira que faria no homem:
/regular_expression (search forward)
?regular_expression (search backward)
Em seguida, digite "n" para encontrar a próxima correspondência e "N" para encontrar a anterior.
Você também pode navegar usando o mouse se o seu terminal suportar, e você digita:
:set mouse=a
Editar: esqueci que você pode sair com:
:q (if you haven't changed the text)
:wq (to save it before quitting)
:q! (to abandon changes)
Existe outra solução, que envolve um script. Salve este script para, por exemplo, tab.pl
.
#!/usr/bin/perl
use strict;
my @lines;
# first read the file into a list of lists
while (<>)
{
chomp; # remove the newline from the end of the line
my @fields = split("\t");
push @lines, \@fields;
}
my @lengths;
# calculate the maximum lengths of each field
foreach (@lines)
{
for (my $i = 0; $i < scalar @$_; $i++)
{
$lengths[$i] = $lengths[$i] < length $$_[$i] ? length $$_[$i] : $lengths[$i];
}
}
# now print the text aligned
foreach (@lines)
{
for (my $i = 0; $i < scalar @$_; $i++)
{
print $$_[$i], " " x ($lengths[$i] - length ($$_[$i]) + 1);
}
print "\n";
}
Em seguida, basta digitar:
perl tab.pl some_file.csv | less
Ou salve o resultado em um arquivo e abra-o com seu editor de texto favorito:
perl tab.pl some_file.csv > result.txt
pr
permite expandir as guias para um determinado número de espaços com -e
. Não se esqueça de passar -t -T
para que não realmente formate a página inteira para impressão.