
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.
Arquivado em: Dicas, Linux, PlanetaGnuLinux, PlanetaUbuntu
one line:
paste A B | awk ‘{print $1 ” ” $3}’ > C
boa dica
‘paste’ concatena linha por linha (quando encontra newline), enquanto ‘cat’ concatena de arquivo em arquivo (quando encontra EOF)
freakcode: thanks, vou melhorar o post.
caixeiro viajante: boa! eu resolvi separar para explicar melhor, mas sem duvida o pipe ajuda bastante