O comando paste

A situação:
Existem dois arquivos, A e B, com 2 colunas cada e um número qualquer de linhas.

O problema:
Criar um aquivo C de forma que a 1a coluna do arquivo C seja a 1a coluna do arquivo A e a 2a coluna do arquivo C seja a 1a coluna do arquivo B.

A solução:
Parte 1 – Juntando os arquivos:

paste A B > TEMP

este comando faz com que o arquivo B seja colado ‘ao lado’ do arquivo A em um arquivo TEMP (o paste é semelhante ao cat, porém usando o cat o arquivo B seria colado ‘abaixo’ do arquivo A).

Parte 2 – Separando as colunas:

awk '{print $1 " " $3}' TEMP > C

isso faz com que as colunas 1 e 3 do arquivo TEMP sejam coladas no arquivo C, resolvendo o problema.

Aposto que existe uma forma mais prática de fazer isso (e certamente n+1 formas mais complexas e com mais gambiarras também), de qualquer maneira está aí a dica.

3 Respostas

  1. one line:
    paste A B | awk ‘{print $1 ” ” $3}’ > C
    😛

    boa dica🙂

  2. ‘paste’ concatena linha por linha (quando encontra newline), enquanto ‘cat’ concatena de arquivo em arquivo (quando encontra EOF)

  3. freakcode: thanks, vou melhorar o post.

    caixeiro viajante: boa! eu resolvi separar para explicar melhor, mas sem duvida o pipe ajuda bastante🙂

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: