21. 103.2 Aplicando Filtros a Textos e Arquivos - uniq, od, paste, split
UNIQ
Explicações gerais
uniq: O comando uniq é utilizado para remover as linhas que estão duplicadas em um arquivo, por exemplo se dentro do arquivo você estiver com 5 nomes paulo e 4 nomes Ana, com o uniq ele irá aparecer apenas duas linhas uma com o nome paulo e outra com o nome ana. Temos diversos parametros que veremos logo em seguida
Casos de uso
Quando utilizamos o comando uniq sem outro comando ele apenas retirará o que for duplicada seguidamente, exemplo:
Geralmente o uniq é utilizado com o comando sort que com isso conseguimos ordenar os arquivos que queremos e deixa um abaixo do outro e logo em seguida utilizaremos o uniq para remover as linhas duplicadas:
Limitações ou exceções
Como vimos acima o comando precisa que as linhas estejam ordenadas, ou seja uma seguida da outra e exatamente igual;
O nome tem que ser exatamente como está na sua linha de cima se mudar maiúsculo ou minúsculo ele já não conta como se fosse uma linha repetida.
Sheet Cheet
Abre o arquivo e mostra apenas as linhas que não estão duplicadas.
Obs: Caso as linhas não forem seguidas:
uniq arquivo.txt
Mostra apenas as linhas que foram repetidas e ignora as demais:
uniq -d arquivo.txt
Utilizando o comando sort para agrupar e de fato não ter repetições no arquivo:
sort arquivo.txt | uniq
Faz o que a opção acima informa porém ele conta as linhas repetidas
sort arquivo.txt | uniq -c
Abre o arquivo e mostra apenas as linhas que não estão duplicadas.
Obs: Caso as linhas não forem seguidas:
uniq arquivo.txt
OD
Explicações gerais
O comando exibe as informações de um arquivo em formato octal, mas também pode mostrar em outros formatos, como veremos a seguir.
Casos de uso
Podemos utilizar para verificar se os arquivos backupeados.
Por exemplo para realizar backups geralmente enviamos o arquivo para outro local e antes de enviar o arquivo para o outro local teremos que utilizar o "OD" para checar o arquivo,e guardar a informação e após enviar utilizar outro comando auxiliar para verificar se os Hexadecimais do arquivo continuam o mesmo ou seja integro:
Coleta as informações do arquivo original:
od -t x1 original.txt > original_hex.txt
Geralmente utilizamos a compactação com o comando "tar" para o arquivo exemplo:
tar -cvf backup_original.tar ./original.txt
Devemos repetir o comando de checagem para o arquivo compactado:
od -t x1 backup_original.tar > backup_original_hex.txt
Provavelmente você irá enviar o seu backup para outro local utilizando o rsync ou alguma outra ferramenta, e lá o interessando é você repetir o procedimento da utilização dos comandos citados acima, e para checar se realmente os arquivos não se corromperam durante o caminho realizar o comparativo dos arquivos utilizando o comando "diff",
Obs: Para enviar arquivos também é interessante a criação de um hash como o "md5sum", não iremos utilizar para não estender mais a explicação.
diff original_hex.txt original_hex_enviado.txt
Se tudo ocorrer normalmente o comando não terá saida alguma.
Em caso de problema a saída seria essa
Caso o arquivo esteja integro o mesmo não exibirá nada
Limitações ou exceções
O od é uma ferramenta de linha de comando: O od é uma ferramenta de linha de comando que exige conhecimentos básicos de programação e de linha de comando para ser utilizada efetivamente.
O od exibe dados brutos: O od exibe dados binários em formato bruto, o que pode tornar a análise e interpretação dos dados mais difícil para usuários iniciantes.
Sheet Cheet
Exibe o conteúdo do arquivo "file.txt" em formato ASCII.
od -c file.txt
Exibe o conteúdo do arquivo "file.bin" em formato hexadecimal.
od -x file.bin
Exibe o conteúdo do arquivo "file.dat" em formato decimal de 1 byte
od -t d1 file.dat:
Exibe o conteúdo dos primeiros "n" bytes do arquivo "file.img" em formato hexadecimal de 1 byte.
od -A n -t x1 file.img
Exibe os primeiros 8 bytes do arquivo "file.raw" em formato ponto flutuante de precisão dupla.
od -N 8 -t fD file.raw
Observações finais
JOIN | PASTE
Explicações gerais
Join: O comando ele pega o índice de uma ou mais linhas e junta com outro mesmo índice de outro arquivo, veremos exemplos a seguir
Paste: Caso você queira Comparar dois arquivos lado a lado o mesmo realiza essa tarefa, ele pega a linha 1 do seu primeiro arquivo e junta com a primeira linha a segunda linha e assim respectivamente.
Casos de uso
Por exemplo podemos unir as informações dos usuários e grupos no Linux:
join -t: -1 4 -2 3 /etc/passwd /etc/group
join -t ',' -1 1 -2 1 file1.csv file2.csv
Este comando une as linhas correspondentes em file1.csv e file2.csv usando a primeira coluna como campo de junção e o caractere , como delimitador de campo. Ele exibe as colunas de ambas as entradas e apenas as linhas que têm correspondência em ambas as entradas. Os parâmetros usados neste comando são:
-t ',': define o caractere , como delimitador de campo
-1 1: define a primeira coluna de file1.csv como campo de junção
-2 1: define a primeira coluna de file2.csv como campo de junção
Paste
Limitações ou exceções
Join
As linhas precisam estar em orden alfabetica caso contrario você precisa utilizar o comando auxiliar "sort"
O comando entende que a primeira linha do arquivo é a primiera linha do arquivo comparado, caso você saiba onde está a informação de cada campo você deve inserir as opçõesinformadas no sheetcheet.
pega apenas uma chave por correspondência;
Se o arquivo for muito grande consome bastante memoria.
Paste
Ele só funciona com arquivos de texto com um número igual de linhas. Se os arquivos de entrada tiverem um número diferente de linhas, o paste terminará quando atingir o final do arquivo com o menor número de linhas.
O paste não realiza a edição de arquivos. Ele apenas combina os dados de entrada.
Ele não pode mesclar arquivos com diferentes formatos de codificação de caracteres. Todos os arquivos de entrada devem estar em um único formato de codificação de caracteres.
O paste não pode ser usado para alterar os dados de entrada ou criar novos dados. Ele apenas mescla dados existentes.
O paste é sensível ao tamanho da tela do terminal. Se o tamanho da tela for menor do que o número de caracteres na linha mesclada, o paste não mesclará as linhas corretamente.
O paste tem um limite de colunas que podem ser mescladas. Se o número de colunas for maior do que o limite, o paste falhará.
Cheet Sheet
Join
Une as linhas dos dois arquivos se os mesmos estiverem em ordem alfabética
join arquivo01.txt arquivo02.txt
Esse comando ignora as letras maiúscula e minúsculas
join -i arquivo01.txt arquivo02.txt
O parametro -t ele limita até onde vai o indice ou seja se você colocar um ',' ele vai mostrar apenas até onde possui o ','
join -t ',' file1.csv file2.csv
Paste
Mesclar duas colunas de dados em um único arquivo, separando-as por um espaço:
paste file1.txt file2.txt
Mesclar duas colunas de dados em um único arquivo, separando-as por uma vírgula:
paste -d ',' file1.txt file2.txt
Concatenar linhas de dois arquivos e separá-las com uma tabulação:
paste -d '\t' file1.txt file2.txt
Adicionar uma coluna de números sequenciais a um arquivo:
seq 1 10 | paste - myfile.txt
Mesclar todas as linhas de um arquivo em uma única linha:
paste -s file.txt
Mesclar todas as linhas de um arquivo em uma única linha, separando-as por uma vírgula:
paste -s -d ',' file.txt
Observe que os parâmetros -d são usados para especificar o delimitador que separa as linhas mescladas, enquanto o parâmetro -s é usado para mesclar todas as linhas em uma única linha
Observações finais
SPLIT
Explicações gerais
O comando "split" do Linux divide um arquivo em pedaços menores, gerando vários arquivos com nomes diferentes, cada um contendo uma parte do arquivo original. Isso é útil quando se deseja transferir ou armazenar um arquivo grande em dispositivos de armazenamento limitados, com isso conseguimos incluir em um ou mais locais diferentes. O tamanho dos arquivos de saída pode ser especificado pelo administrador.
Casos de uso
Transferir arquivos grandes pela internet ou em dispositivos de armazenamento limitados:
Exemplo de uso: dividir um arquivo grande em várias partes menores de 10MB e transferir via FTP:
split -b 10m arquivo_grande.zip arquivo_parte_
Isso criará várias partes com o nome "arquivo_parte_aa", "arquivo_parte_ab", etc., cada uma com tamanho de 10MB.
Realizar backup de arquivos grandes:
Exemplo de uso: dividir um arquivo grande em várias partes menores de 1GB e criar backups incrementais:
split -b 1g backup.tar.gz backup_parte_
Isso criará várias partes com o nome "backup_parte_aa", "backup_parte_ab", etc., cada uma com tamanho de 1GB.
Manipular arquivos grandes em seu sistema:
Exemplo de uso: dividir um arquivo grande em partes menores para facilitar a edição com o editor de texto "vim":
Isso criará várias partes com o nome "arquivo_parte_aa", "arquivo_parte_ab", etc., cada uma com 1 milhão de linhas.
Transferir arquivos para dispositivos de armazenamento limitados:
Exemplo de uso: dividir um arquivo grande em partes menores de 500MB e copiar para um pendrive:
split -b 500m arquivo_grande.mp4 arquivo_parte_
Isso criará várias partes com o nome "arquivo_parte_aa", "arquivo_parte_ab", etc., cada uma com tamanho de 500MB.
Compactar arquivos grandes:
Exemplo de uso: dividir um arquivo grande em partes menores antes de compactar com o comando "gzip":
split -b 100m arquivo_grande.iso arquivo_parte_ && gzip arquivo_parte_*
Isso criará várias partes com o nome "arquivo_parte_aa", "arquivo_parte_ab", etc., cada uma com tamanho de 100MB, e depois compactará cada parte com o comando "gzip".
Limitações ou exceções
O comando não suporta a divisão do arquivo com base em tamanho em bytes ou em caracteres. Ele só permite dividir o arquivo em partes com um número fixo de linhas.
O comando pode demorar muito tempo para dividir arquivos muito grandes, especialmente se você especificar um número muito grande de linhas por arquivo de saída.
O comando não possui muitas opções para personalização avançada do nome dos arquivos de saída, como adicionar uma data ou hora no nome do arquivo.
Se você precisar dividir um arquivo em partes com base em um padrão específico de conteúdo (por exemplo, dividir um arquivo XML em partes com base nas tags raiz), o comando "split" não será capaz de fazer isso e você precisará procurar outras soluções.
21. 103.2 Aplicando Filtros a Textos e Arquivos - uniq, od, paste, split
UNIQ
Explicações gerais
uniq: O comando uniq é utilizado para remover as linhas que estão duplicadas em um arquivo, por exemplo se dentro do arquivo você estiver com 5 nomes paulo e 4 nomes Ana, com o uniq ele irá aparecer apenas duas linhas uma com o nome paulo e outra com o nome ana. Temos diversos parametros que veremos logo em seguida
Casos de uso
Quando utilizamos o comando uniq sem outro comando ele apenas retirará o que for duplicada seguidamente, exemplo:
Geralmente o uniq é utilizado com o comando sort que com isso conseguimos ordenar os arquivos que queremos e deixa um abaixo do outro e logo em seguida utilizaremos o uniq para remover as linhas duplicadas:
Limitações ou exceções
Como vimos acima o comando precisa que as linhas estejam ordenadas, ou seja uma seguida da outra e exatamente igual;
O nome tem que ser exatamente como está na sua linha de cima se mudar maiúsculo ou minúsculo ele já não conta como se fosse uma linha repetida.
Sheet Cheet
Abre o arquivo e mostra apenas as linhas que não estão duplicadas. Obs: Caso as linhas não forem seguidas:
Mostra apenas as linhas que foram repetidas e ignora as demais:
Utilizando o comando sort para agrupar e de fato não ter repetições no arquivo:
Faz o que a opção acima informa porém ele conta as linhas repetidas
Abre o arquivo e mostra apenas as linhas que não estão duplicadas. Obs: Caso as linhas não forem seguidas:
OD
Explicações gerais
O comando exibe as informações de um arquivo em formato octal, mas também pode mostrar em outros formatos, como veremos a seguir.
Casos de uso
Podemos utilizar para verificar se os arquivos backupeados.
Por exemplo para realizar backups geralmente enviamos o arquivo para outro local e antes de enviar o arquivo para o outro local teremos que utilizar o "OD" para checar o arquivo,e guardar a informação e após enviar utilizar outro comando auxiliar para verificar se os Hexadecimais do arquivo continuam o mesmo ou seja integro:
Coleta as informações do arquivo original:
Geralmente utilizamos a compactação com o comando "tar" para o arquivo exemplo:
Devemos repetir o comando de checagem para o arquivo compactado:
Provavelmente você irá enviar o seu backup para outro local utilizando o rsync ou alguma outra ferramenta, e lá o interessando é você repetir o procedimento da utilização dos comandos citados acima, e para checar se realmente os arquivos não se corromperam durante o caminho realizar o comparativo dos arquivos utilizando o comando "diff", Obs: Para enviar arquivos também é interessante a criação de um hash como o "md5sum", não iremos utilizar para não estender mais a explicação.
Se tudo ocorrer normalmente o comando não terá saida alguma.
Em caso de problema a saída seria essa
Caso o arquivo esteja integro o mesmo não exibirá nada
Limitações ou exceções
O od é uma ferramenta de linha de comando: O od é uma ferramenta de linha de comando que exige conhecimentos básicos de programação e de linha de comando para ser utilizada efetivamente.
O od exibe dados brutos: O od exibe dados binários em formato bruto, o que pode tornar a análise e interpretação dos dados mais difícil para usuários iniciantes.
Sheet Cheet
Exibe o conteúdo do arquivo "file.txt" em formato ASCII.
Exibe o conteúdo do arquivo "file.bin" em formato hexadecimal.
Exibe o conteúdo do arquivo "file.dat" em formato decimal de 1 byte
Exibe o conteúdo dos primeiros "n" bytes do arquivo "file.img" em formato hexadecimal de 1 byte.
Exibe os primeiros 8 bytes do arquivo "file.raw" em formato ponto flutuante de precisão dupla.
Observações finais
JOIN | PASTE
Explicações gerais
Join: O comando ele pega o índice de uma ou mais linhas e junta com outro mesmo índice de outro arquivo, veremos exemplos a seguir
Paste: Caso você queira Comparar dois arquivos lado a lado o mesmo realiza essa tarefa, ele pega a linha 1 do seu primeiro arquivo e junta com a primeira linha a segunda linha e assim respectivamente.
Casos de uso
Por exemplo podemos unir as informações dos usuários e grupos no Linux:
Este comando une as linhas correspondentes em file1.csv e file2.csv usando a primeira coluna como campo de junção e o caractere , como delimitador de campo. Ele exibe as colunas de ambas as entradas e apenas as linhas que têm correspondência em ambas as entradas. Os parâmetros usados neste comando são:
-t ',': define o caractere , como delimitador de campo -1 1: define a primeira coluna de file1.csv como campo de junção -2 1: define a primeira coluna de file2.csv como campo de junção
Paste
Limitações ou exceções
Join
Paste
Cheet Sheet
Join
Une as linhas dos dois arquivos se os mesmos estiverem em ordem alfabética
Esse comando ignora as letras maiúscula e minúsculas
O parametro -t ele limita até onde vai o indice ou seja se você colocar um ',' ele vai mostrar apenas até onde possui o ','
Paste
Mesclar duas colunas de dados em um único arquivo, separando-as por um espaço:
Mesclar duas colunas de dados em um único arquivo, separando-as por uma vírgula:
Concatenar linhas de dois arquivos e separá-las com uma tabulação:
Adicionar uma coluna de números sequenciais a um arquivo:
Mesclar todas as linhas de um arquivo em uma única linha:
Mesclar todas as linhas de um arquivo em uma única linha, separando-as por uma vírgula:
Observe que os parâmetros -d são usados para especificar o delimitador que separa as linhas mescladas, enquanto o parâmetro -s é usado para mesclar todas as linhas em uma única linha
Observações finais
SPLIT
Explicações gerais
O comando "split" do Linux divide um arquivo em pedaços menores, gerando vários arquivos com nomes diferentes, cada um contendo uma parte do arquivo original. Isso é útil quando se deseja transferir ou armazenar um arquivo grande em dispositivos de armazenamento limitados, com isso conseguimos incluir em um ou mais locais diferentes. O tamanho dos arquivos de saída pode ser especificado pelo administrador.
Casos de uso
Exemplo de uso: dividir um arquivo grande em várias partes menores de 10MB e transferir via FTP:
Isso criará várias partes com o nome "arquivo_parte_aa", "arquivo_parte_ab", etc., cada uma com tamanho de 10MB.
Exemplo de uso: dividir um arquivo grande em várias partes menores de 1GB e criar backups incrementais:
Isso criará várias partes com o nome "backup_parte_aa", "backup_parte_ab", etc., cada uma com tamanho de 1GB.
Exemplo de uso: dividir um arquivo grande em partes menores para facilitar a edição com o editor de texto "vim":
Isso criará várias partes com o nome "arquivo_parte_aa", "arquivo_parte_ab", etc., cada uma com 1 milhão de linhas.
Exemplo de uso: dividir um arquivo grande em partes menores de 500MB e copiar para um pendrive:
Isso criará várias partes com o nome "arquivo_parte_aa", "arquivo_parte_ab", etc., cada uma com tamanho de 500MB. Compactar arquivos grandes:
Exemplo de uso: dividir um arquivo grande em partes menores antes de compactar com o comando "gzip":
Isso criará várias partes com o nome "arquivo_parte_aa", "arquivo_parte_ab", etc., cada uma com tamanho de 100MB, e depois compactará cada parte com o comando "gzip".
Limitações ou exceções
Sheet Cheet
Incluir
Observações finais