shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Bulk] Re: [shell-script] Column


From: Sidney Souza
Subject: Re: [Bulk] Re: [shell-script] Column
Date: Sun, 10 May 2015 11:58:26 -0300

O que eu mais gosto no Júlio é que ele não sabe brincar kkkkkk.

Ótimos exemplos que, sem sombra de dúvida, irei utilizar o mais breve possível.

Mas a perguntar que não quer calar:

Júlio! Esses comandos que mencionastes funcionam no bash 3?

------------------------------------------------------
http://www.politicos.org.br

2015-05-09 15:15 GMT-03:00 'Julio C. Neves' address@hidden [shell-script] <address@hidden>:
 

Se vc quiser usar column, a construção que vc usou não é a melhor, prefiro usar:
$ (echo -e "123\n789"; echo -e "456\n0") | column -c16
123    456
789    0

ou:
$ column -c 16 <<< "$(echo -e "123\n789"; echo -e "456\n0")"
123    456
789    0

ou ainda sem usar column:
$ (echo -e "123\n789"; echo -e "456\n0") | xargs -n2
123 789
456 0

Mas tb tem o cmd fold (que parece um pouco com o column mas não é aplicável no caso pq ele trabalha linha a linha) onde vc pode atribuir a largura a ser impressa, veja:
$ echo {01..16}
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16
$ echo {01..16} | fold -w 12
01 02 03 04
05 06 07 08
09 10 11 12
13 14 15 16
Repare que existem 8 algarismos e 4 espaços (depois do 04, 08 e 12 tb tem espaço) e 12 é a soma disso. Veja que vc tb pode truncar:
$ echo {01..16} | fold -w 10
01 02 03 0
4 05 06 07
 08 09 10
11 12 13 1
4 15 16
Ou colocar em 3 colunas, usando -w9
$ echo {01..16} | fold -w9
01 02 03
04 05 06
07 08 09
10 11 12
13 14 15
16

Aconselho demais a leitura sobre o cmd pr, ele faz tudo em termos de formatação. Segundo o tldp, ele mescla a funcionalidade do nl, paste, column e expand. Só um exemplo:

$ seq -w 10 | pr --column=2 -t
01                    06
02                    07
03                    08
04                    09
05                    10
$ seq -w 10 | pr --column=5 -t
01          03        05          07        09
02          04        06          08        10
Onde o -t é só para não fazer cabeçalho.

A última, para dividir um texto em 3 linhas:
$ Texto="Eu vi um velho com um fole velho nas costas. Tanto fede o fole do velho quanto o velho do fole fede"
$ echo $Texto | fold -w $((${#Texto}/3))
Eu vi um velho com um fole velho
nas costas. Tanto fede o fole do
velho quanto o velho do fole fede


​OBS: Os meus cursos (veja datas no rodapé) abordam isso tudo​


Abcs,
Julio
@juliobash
P
róximos cursos de Shell
Cidade         Local Período
Rio de Janeiro EDX
​0​
8 a
​1​
2/0
​6​
/15
São Paulo 4Linux 15 a 19/06/15
São Paulo 4Linux 03 a 07/08/15
São Paulo 4Linux 07 a 11/12/15

Dou treinamento de Shell em qualquer cidade.
Para mais detalhes, me mande um e-mail.


Em 8 de maio de 2015 17:18, Alfredo Casanova address@hidden [shell-script] <address@hidden> escreveu:
 

column -c 16 <(echo -e "123\n789") <(echo -e "456\n0")
123 456
789 0


a solução é essa, mas ainda não entendi o pq do 16.
" -c      Output is formatted for a display columns wide."
não achei a relação




On Fri, May 8, 2015 at 5:00 PM 'Julio C. Neves' address@hidden [shell-script] <address@hidden> wrote:
 

$ echo -e "123\n789" | column -c 16
123    789
É isso?


Abcs,
Julio
@juliobash
P
róximos cursos de Shell
Cidade         Local Período
Rio de Janeiro EDX 18 a 22/05/15
São Paulo 4Linux 15 a 19/06/15
São Paulo 4Linux 03 a 07/08/15
São Paulo 4Linux 07 a 11/12/15

Dou treinamento de Shell em qualquer cidade.
Para mais detalhes, me mande um e-mail.


Em 8 de maio de 2015 13:23, Alfredo Casanova address@hidden [shell-script] <address@hidden> escreveu:
 

Tenho 2 outputs assim:
$ echo -e "123\n789"
123
789

$ echo -e "456\n0"
456
0

queria transformar em:
123 456
789 0

é possível fazer com column? Apanhei do man aqui e não consegui. Se não, qual seria a melhor forma?





reply via email to

[Prev in Thread] Current Thread [Next in Thread]