Por exemplo, eu tenho um arquivo (produzido com echo -e "var1\tvar2\t\var3\tvar4" > foo
) que é produzido como:
$ cat foo
case elems meshing nlsys
uniform 2350 0.076662 2.78
non-conformal 348 0.013332 0.55
scale 318 0.013333 0.44
smarter 504 0.016666 0.64
submodel 360 .009999 0.40
unstruct-quad 640 0.019999 0.80
unstruct-tri 1484 0.01 0.88
Eu preferiria a saída como esta (aqui eu usei vim
e :set tabstop=14
):
case elems meshing nlsys
uniform 2350 0.076662 2.78
non-conformal 348 0.013332 0.55
scale 318 0.013333 0.44
smarter 504 0.016666 0.64
submodel 360 .009999 0.40
unstruct-quad 640 0.019999 0.80
unstruct-tri 1484 0.01 0.88
Posso obter a mesma funcionalidade cat
se usar $ tabs=15
no bash (consulte esta pergunta ). Existe um programa que faça esse tipo de formatação automaticamente? Não quero experimentar o tabs
valor antes de cat
inserir um arquivo.
shell
command-line
cat
columns
Sebastian
fonte
fonte
-s $'\t'
(não encontrado em todas as implementações de coluna), caso alguns dos campos contenham espaços.$'\t'
significa caractere de tabulação. Nova linha é$'\n'
e assim por diante.column -ts: /etc/passwd
. Parece legal!-n
, ou seja, evitar a fusão de várias delimitadores adjacentesVárias opções:
column é um comando não padrão, algumas implementações / versões não suportam a opção -s. Ele calcula a largura da coluna com base na entrada, mas isso significa que ele só pode começar a ser exibido quando toda a entrada tiver sido alimentada.
$'...'
A sintaxe ksh93 também é encontrada no zsh e no bash.Com zsh:
fonte
Você também pode usar
rs
como uma alternativa paracolumn -t
:-c
altera o separador de colunas de entrada, mas-c
sozinho define o separador de colunas de entrada para uma guia.-z
define a largura de cada coluna para a largura da entrada mais longa da coluna em vez de tornar todas as colunas da mesma largura. Se algumas linhas tiverem menos colunas que a primeira, adicione-n
.fonte
rs
é isso? Não tenho esse comando instalado no meu CentOS nem nos meus sistemas Ubuntu / Mint.rs
, então você pode instalá-lo comapt-get install rs
.(x=$(cat);rs -c -z $(wc -l<<<"$x")<<<"$x")
? Eu não sei como eu iria sobre como usá-lo com um arquivo csvOutra ferramenta que pode fazer isso é da TSV Utilities
tsv-pretty
do eBay (exoneração de responsabilidade: sou o autor). É necessário o passo adicional de alinhar campos numéricos no ponto decimal. Por exemplo:Existem várias opções de formatação. Por exemplo,
-u
sublinha o cabeçalho e-f
formata os flutuadores em um campo da mesma forma para facilitar a leitura:Mais informações estão disponíveis na referência tsv-pretty .
fonte
A questão era sobre a saída de colunas delimitadas por tabulação.
Portanto, a resposta correta é uma pequena adaptação da resposta de @nisetama. Eu adicionei a opção -C $ '\ t' que define a formatação da saída.
Kudo's para @nisetama though :)
fonte
EXECUÇÃO DE AMOSTRAS
REF LIB em: https://github.com/gdbtek/linux-cookbooks/blob/master/libraries/util.bash
fonte
sed
sendo usados.