Sanderti01 / Learn-Linux

0 stars 0 forks source link

21. 103.2 Aplicando Filtros a Textos e Arquivos - uniq, od, paste, split #8

Open Sanderti01 opened 1 year ago

Sanderti01 commented 1 year ago

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:

Image

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:

Image

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:

  1. Coleta as informações do arquivo original:

    od -t x1 original.txt > original_hex.txt
  2. Geralmente utilizamos a compactação com o comando "tar" para o arquivo exemplo:

    tar -cvf backup_original.tar ./original.txt
  3. Devemos repetir o comando de checagem para o arquivo compactado:

    od -t x1 backup_original.tar > backup_original_hex.txt
  4. 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

Image

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

Paste

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

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.

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.

Exemplo de uso: dividir um arquivo grande em partes menores para facilitar a edição com o editor de texto "vim":

split -l 1000000 arquivo_grande.txt arquivo_parte_

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:

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

Sheet Cheet

Incluir

Observações finais

Sanderti01 commented 1 year ago

Refazer a parte do comando "Split" colocar o Cheet Sheet com os parametros