Postagem em destaque

Criando bot do Telegram em Shell script com ShellBot

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 *