Postagem em destaque

Mesclando linhas de arquivos

Sobre

Mesclar linhas de arquivos.

Descrição

Escrever linhas consistindo das sequências correspondentes de linhas de cada arquivo, separados por TABs para a saída padrão.

Para mais informações consulte o manual: paste(1)


Uso

paste [OPCAO]... [ARQUIVO]...

Para este exemplo criei dois arquivos chamados arq1.txt e arq2.txt. No arq1.txt estão armazenados alguns nomes, enquanto no arq2.txt temos idades; Ambos os arquivos possuem a mesma quantidade de itens.

Segue o conteúdo de ambos os arquivos:
SHAMAN@shellscriptx:~$ cat arq1.txt
Maria
João
Leticia
Jader
SHAMAN@shellscriptx:~$ cat arq2.txt
55 anos
23 anos
42 anos
34 anos

Exemplos

1. Mesclando o conteúdo dos arquivos.
SHAMAN@shellscriptx:~$ paste arq1.txt arq2.txt
Maria    55 anos
João     23 anos
Leticia  42 anos
Jader    34 anos
Observe que o conteúdo dos arquivos foram exibidos em paralelo, listando os dados como em colunas; Onde a primeira linha da saída padrão é constituída do conteúdo da primeira linha de cada arquivo e assim por diante.

2. Definindo o caractere '=' (igual) como delimitador no lugar do TAB
SHAMAN@shellscriptx:~$ paste -d'=' arq1.txt arq2.txt
Maria=55 anos
João=23 anos
Leticia=42 anos
Jader=34 anos
Por padrão o comando utiliza a tabulação como delimitador para separar o conteúdo dos arquivos enquanto são exibidos. Ao definir o sinal de '=' (igual) como delimitador, alteramos o comportamento do comando e o sinal é inserido entre os valores das linhas de cada arquivo.

Nota: É possível definir uma lista de delimitadores, onde cada delimitador é inserido na ordem declarada, anexando-o ao seu respectivo campo separador. Se o número de campos for superior ao número de delimitadores, o comando reinicia o ciclo da lista.

3. Intercalando as linhas.
SHAMAN@shellscriptx:~$ paste -d'\n' arq1.txt arq2.txt
Maria
55 anos
João
23 anos
Leticia
42 anos
Jader
34 anos
Neste caso ao definir o caractere '\n' (nova linha) como delimitador, forçamos o comando a inseri-la sempre que a linha do arquivo subsequente é lida. Fazendo com que a mesma seja anexada a próxima linha.

4. Listando o conteúdo na horizontal.
SHAMAN@shellscriptx:~$ paste -s arq1.txt arq2.txt
Maria    João    Leticia    Jader
55 anos    23 anos    42 anos    34 anos
Observe que o conteúdo de cada arquivo é listado um por linha, exibindo as informações na horizontal.

5. Simulando o comando cat.
SHAMAN@shellscriptx:~$ paste -d '\n' -s arq1.txt arq2.txt
Maria
João
Leticia
Jader
55 anos
23 anos
42 anos
34 anos
Ao utilizar o parâmetro '-s' em conjunto com '-d', fez com que o comando anexasse uma nova linha em cada campo do arquivo (um de cada vez), o resultado obtido foi o mesmo que executar o comando 'cat arq1.txt arq2.txt'. 

Nota: A opção '-z, --zero-terminated' delimita itens com zero byte em vez de uma nova linha (ASCII LF). Trata a entrada como itens separados por ASCII NUL e termina a saída com ASCII NUL. Esta opção pode ser útil conjuntamente com 'perl -0' ou 'find -print0' e 'xargs -0' que faz o mesmo para manipular de forma confiável nomes de arquivos arbitrários (mesmo aqueles que contêm espaços em branco ou outros caracteres especiais).

Comentários

Contato

Nome

E-mail *

Mensagem *