Qual é a maneira mais eficiente de converter dados separados por tabulação como este:
a b c d cat
NULL NULL NULL NULL NULL
NULL NULL NULL d d
NULL NULL c NULL c
NULL NULL c d c; d
NULL b NULL NULL b
NULL b NULL d b; d
NULL b c NULL b; c
NULL b c d b; c; d
a NULL NULL NULL a
a NULL NULL d a; d
a NULL c NULL a; c
a NULL c d a; c; d
a b NULL NULL a; b
a b NULL d a; b; d
a b c NULL a; b; c
a b c d a; b; c; d
Algo próximo disso:
a | b | c | d | cat
-----+------+------+------+-----------
NULL | NULL | NULL | NULL | NULL
NULL | NULL | NULL | d | d
NULL | NULL | c | NULL | c
NULL | NULL | c | d | c; d
NULL | b | NULL | NULL | b
NULL | b | NULL | d | b; d
NULL | b | c | NULL | b; c
NULL | b | c | d | b; c; d
a | NULL | NULL | NULL | a
a | NULL | NULL | d | a; d
a | NULL | c | NULL | a; c
a | NULL | c | d | a; c; d
a | b | NULL | NULL | a; b
a | b | NULL | d | a; b; d
a | b | c | NULL | a; b; c
a | b | c | d | a; b; c; d
Atualmente, uso o Notepad ++ da seguinte maneira:
- Converter guias em espaços
- Alinhar os dados manualmente
- Use o modo de coluna para inserir os tubos
O segundo passo é o mais tedioso e eu prefiro que pelo menos essa parte seja automatizada.
Nota: Eu uso um navegador quando trabalho e às vezes tenho um editor de texto aberto ao lado. A solução eficiente é aquela que requer menos esforço. Eu posso usar:
- Notepad ++
- Editor de texto genérico com suporte a localizar / substituir regexp
- JavaScript digitado no console do navegador
- Serviço web online
- PHP na linha de comando (
php -a
)
conversion
csv
text-formatting
ascii
Salman A
fonte
fonte
awk
script simples .{{(⊃⍵)⍪⍉⍪↑¨↓⍉↑1↓⍵}s¨'⎕T'⎕T¨(s←1↓¨⊢⊂⍨⊢=⊃)¯1⌽⍵}
parece bom o suficiente para trabalhar, não é?)Respostas:
Como converter valores separados por tabulação em uma tabela ASCII?
Eu uso o gerador de tabelas de texto para esse tipo de tarefa.
Colei seus dados nessa página e ele criou a seguinte tabela:
Você pode copiar esta saída (o gerador fez a maior parte do trabalho duro), colar no bloco de notas ++ e limpar conforme apropriado.
fonte
Se você precisar de uma solução de linha de comando, também poderá usar o pandoc com o filtro pandoc-placetable .
Coloque sua mesa
foo.txt
e execute:O que resulta no seguinte
output.md
:Para ler de STDIN, deixe de fora o
--file
argumento. Para imprimir em STDOUT, deixe de fora o-o
argumento.fonte
A idéia de ruslan de usar o
column
comando Unix / Linux é boa, mas a linha de comando dada em sua resposta não funciona muito bem. Primeiro de tudo,column
não reconhece\t
(ou\\t
) na linha de comando como uma guia. Se você tiverbash
, você pode fazerCaso contrário, você pode fazer
Mas mesmo isso não responde à pergunta. Você pode obter as barras verticais fazendo
que produz saída como
Adicionar a linha do traço após o cabeçalho manualmente não é tão tedioso.
Se você não tem acesso a um sistema Unix / Linux completo, pode usar o Cygwin ou um dos outros gostos do Unix para isso.
fonte
set ts=4
configuração do Vim ).