De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.
Colaboração: Julio Cezar Neves
Data de Publicação: 15 de junho de 2020
O paste
é um comando pouco usado por sua sintaxe ser pouco
conhecida. Vamos brincar com 2 arquivos criados da seguinte
forma:
$ seq 10 > inteiros $ seq 2 2 10 > pares
Para ver o conteúdo dos arquivos criados, vamos usar o paste
na sua forma careta:
$ paste inteiros pares
1 2
2 4
3 6
4 8
5 10
6
7
8
9
10
Agora vamos transformar a coluna do pares em linha:
$ paste -s pares
2 4 6 8 10
O separador default é <TAB>, mas isso pode ser alterado com
a opção -d
. Então para calcular a soma do conteúdo de pares
primeiramente faríamos:
$ paste -s -d'+' pares # também poderia ser -sd'+'
2+4+6+8+10
e depois passaríamos esta linha para a calculadora (bc
)
e então ficaria:
$ paste -s -d'+' pares | bc
30
Assim sendo, para calcular o fatorial do número contido em
$Num
, basta:
$ seq $Num | paste -sd'*' | bc
Com o comando paste
você também pode montar formatações exóticas como
esta a seguir:
$ ls | paste -s -d'\t\t\n'
arq1 arq2 arq3
arq4 arq5 arq6
O que aconteceu foi o seguinte: foi especificado para o comando paste
que ele transformaria linhas em colunas (pela opção -s
) e que os seus
separadores (é...! Ele aceita mais de um, mas somente um após cada coluna
criada pelo comando) seriam uma <TAB>
, outra <TAB>
e um <ENTER>
,
gerando desta forma a saída tabulada em 3 colunas. Agora que você já
entendeu isto, veja como fazer a mesma coisa, porém de forma mais fácil e
menos bizarra e tosca, usando o mesmo comando mas com a seguinte sintaxe:
$ ls | paste - - -
arq1 arq2 arq3
arq4 arq5 arq6
E isto acontece porque se ao invés de especificarmos os arquivos colocarmos
o sinal de menos (-
), o comando paste
os substitui pela saída ou
entrada padrão conforme o caso. No exemplo anterior os dados foram mandados
para a saída padrão (stdout), porque o pipe (|
) estava desviando a
saída do ls
para a entrada padrão (stdin) do paste
, mas veja o
exemplo a seguir:
$ cat arq1 predisposição privilegiado profissional $ cat arq2 encher mário motor $ cut -c-3 arq1 | paste -d "" - arq2 preencher primário promotor
Neste caso, o cut
devolveu as três primeiras letras de cada
registro de arq1
, o paste
foi montado para não ter separador
(-d""
) e receber a entrada padrão (desviada pelo pipe) no traço
(-
) gerando a saída juntamente com arq2
.
This policy contains information about your privacy. By posting, you are declaring that you understand this policy:
This policy is subject to change at any time and without notice.
These terms and conditions contain rules about posting comments. By submitting a comment, you are declaring that you agree with these rules:
Failure to comply with these rules may result in being banned from submitting further comments.
These terms and conditions are subject to change at any time and without notice.
Comentários (1)
Já vi por aqui outros posts dizendo "o comando xxx é pouco usado por sua sintaxe ser pouco conhecida". Pura besteira!
Comandos são usados ou não por causa da sua funcionalidade, não por causa da sua sintaxe. Muitos comandos do Unix ou do Linux são raramente usados porque