Como imprimir várias colunas sem truncar?

0

Eu sei que pr -m -t file1 file2 me dará duas colunas assim:

arquivo1:

a
abc
abcdefg
abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz

arquivo2:

1
123
12345678
12345678901234567890

-

$ pr -m -t file1 file2
a                   1
abc                 123
abcdefg                 12345678
abcdefghijklmnopqrstuvwxyzabcdefghi 12345678901234567890

Acima está um corte e colagem literal, mas aqui adicionei espaços para mostrar como ele realmente se alinha no terminal:

$ pr -m -t file1 file2
a                                   1
abc                                 123
abcdefg                             12345678
abcdefghijklmnopqrstuvwxyzabcdefghi 12345678901234567890

Por algum motivo, unix stack exchange não torna os blocos de código sólidos. De qualquer forma, não preciso que os números de linha correspondam (mas para responder à pergunta geral, você também pode responder como fazer isso), mas a propriedade principal que desejo é fazer com que as linhas sejam quebradas em vez de ficarem truncadas. Eu não tenho escolha a não ser pré-processar cada arquivo para uma certa largura e canalizar isso? Se sim, como eu faria isso?

Atualização: suponho que, se houvesse um pouco de command que restringisse a largura de um arquivo e o empacotamento forçado em novas linhas, eu faria: pr -m -t <(command file1) <(command file2)

    
por Timothy Swan 18.04.2018 / 22:54

1 resposta

0

EDITAR:

Se preocupa com o alinhamento?

Se você pegar o script em Perl encontrado aqui , escrito por Peter Stuifzand , e foram nomeados columnFix.perl e chmod u+x columnFix.perl (para ter certeza de que você pode executá-lo, você pode fazer isso:

pr -J -m -t file1 file2 | /path/to/columnFix.perl

Resposta original:

As versões de pr têm linhas truncadas por padrão para 72 caracteres, com duas colunas que cortam a primeira coluna para 35 (35 char/column * 2 columns) + 1 char/separator = 71 characters (então a segunda coluna tem possivelmente 36 caracteres).

Portanto, o mesmo comando que você executou, mas com -J , deve fazer o que parece estar procurando (com o mais próximo possível do seu comando original) se você estiver bem com sem alinhamento de colunas (este é um resultado semelhante ao comando de colagem sugerido nos comentários)

pr -J -m -t file1 file2

Da página do manual:

-J, --join-line

merge full lines, turns off -W line truncation, no column alignment, --sep-string[=STRING] sets separators

    
por 18.04.2018 / 23:24