Eu gostaria de usar o column
comando Unix para formatar algum texto. Eu tenho campos delimitados por tabulações, mas dentro de cada campo também há espaços. column
delimita em espaço em branco (tabulações e espaços). Como posso fazer com que a coluna use apenas guias como delimitador?
Eu estava tentando especificar a guia como delimitador usando:
cat myfile | column -t -s"\t"
fonte
column -t -s $'\t'
como bash parecia pensar'\t'
ambos\
et
, mas$'\t'
significa uma guia literal. Bash fede$'\t'
guia makes, o delimitador. Mas tenho certeza de que façoawk -F "\t"
para usar uma guia como delimitador do awk. Por que isso funciona e não aqui para coluna?Usei o seguinte (só funciona se o seu texto não contiver
|
):Isso apenas substitui as guias por pipes e usa a coluna com pipes como delimitadores.
(Fiz isso porque não vi nada na resposta de Stéphane que funcionasse imediatamente na casca do peixe. Caso contrário, a resposta de Stéphane parece boa.)
fonte
Para POSIX,
$'...'
conhecido como escape ANSI-C, não está definido.Em vez disso, você pode usar
$(printf '\t')
:$(printf '\011')
pode ser usado, pois011
(representação octal do decimal 9) é o código ANSI para um caractere de tabulação horizontal:No entanto, veja os comentários abaixo de Stéphane Chazelas sobre o motivo de isso não ser consistente nas versões do shell.
fonte
"$(printf '\t')"
mostrado na minha resposta. Observe que$'...'
está planejado para inclusão na próxima versão principal da especificação POSIX.$(printf '\t')
POSIX? Obrigado!O
-t
é para selecionar o número de colunas que você deseja. Deixar este espaço em branco não muda nada. Além disso, você deseja um espaço em branco após o teste,-s
então tente isso:cat myfile | column -s \t
fonte
column
preenche linhas antes das colunas. Você pode estar interessado empr