Classificação, ordenação e eliminação de palavras repetidas usando sort
Para conhecermos melhor o sort, vamos supor que o comando “ls -l” retorne os seguintes resultados:
-rw-r--r-- 1 glauco glauco 4556164485 2009-08-13 20:50 brasero.iso.bz2 -rwxr-xr-x 1 glauco glauco 609 2009-06-13 20:15 coresgeratudo.php -rw-r--r-- 1 glauco glauco 443788 2009-04-18 21:47 rpcrt4.dll.tar.gz -rw-r--r-- 1 glauco glauco 473422 2009-06-28 17:22 SnowCoberta.jpg
Perceba que a quinta coluna é o tamanho do arquivo em Bytes. Se quisermos ordenar de forma crescente o resultado do comando por tamanho, então usaremos:
ls -l | sort -k5n
# O resultado será:
-rwxr-xr-x 1 glauco glauco 609 2009-06-13 20:15 coresgeratudo.php -rw-r--r-- 1 glauco glauco 443788 2009-04-18 21:47 rpcrt4.dll.tar.gz -rw-r--r-- 1 glauco glauco 473422 2009-06-28 17:22 SnowCoberta.jpg -rw-r--r-- 1 glauco glauco 4556164485 2009-08-13 20:50 brasero.iso.bz2
E se quisermos ordenar na ordem decrescente, usaremos:
ls -l | sort -k5nr
# O resultado será
-rw-r--r-- 1 glauco glauco 4556164485 2009-08-13 20:50 brasero.iso.bz2 -rw-r--r-- 1 glauco glauco 473422 2009-06-28 17:22 SnowCoberta.jpg -rw-r--r-- 1 glauco glauco 443788 2009-04-18 21:47 rpcrt4.dll.tar.gz -rwxr-xr-x 1 glauco glauco 609 2009-06-13 20:15 coresgeratudo.php
O parâmetro -n informa ao sort que você está classificando números e o -r faz a classificação na ordem inversa. Nesse exemplo usamos o -n pois sabemos que o tamanho dos arquivos são números. Se não colocássemos o -n o sort pensaria que você estaria tentando classificar um texto, veja:
ls -l | sort -k5
# Retornará
-rw-r--r-- 1 glauco glauco 443788 2009-04-18 21:47 rpcrt4.dll.tar.gz -rw-r--r-- 1 glauco glauco 4556164485 2009-08-13 20:50 brasero.iso.bz2 -rw-r--r-- 1 glauco glauco 473422 2009-06-28 17:22 SnowCoberta.jpg -rwxr-xr-x 1 glauco glauco 609 2009-06-13 20:15 coresgeratudo.php
Você também pode fazer a mesma coisa com arquivos
sort arquivo.txt
Para eliminar as repetições você pode usar:
sort -u arquivo.txt
Para saber mais sobre o sort é só rodar:
sort --help
Olá amigo, por acaso você conhece algum programa que conte as palavras de um texto e as ordene retirando as repetições?
O que estou procurando? por exemplo, tenho um texto em inglês, que quero saber quantas palavras (tirando as repetições) existem nele e que também me volte a relação de tais palavras. Isto servirá para eu saber quantas palavras eu aprendi em inglês e quais são elas. Entendeu? hehehe Abraço. e obrigado desde já., se puder me enviar a resposta por email eu agradeço bastante.
Tudo bem Eduardo?
Se vc quer a solução já de cara, ta aí:
for x in $(cat meuarquivo.txt); do echo $x; done | sort | uniq | wc -l
Mas se vc quer entender como faz (o que é muito importante):
Usa o comando wc, ele conta além de palavras (parâmetro -w), as linhas (parâmetro -l) e os caracteres (parâmetro -c).
wc -w meuarquivo.txt
* Mostra quantas palavras há no arquivo ‘meuarquivo.txt’
ls | wc -w
* Mostra quantas palavras retornaram no comando ls
Sobre retirar as palaras repetidas, aí já fica complexo, e não tem muito a ver com o contador de palavras não.
Vou usar o exemplo declarando a variável ‘x’
for x in $(cat meuarquivo.txt); do echo $x; done | sort | uniq
Agora se você quer contar quantas vezes cada palavra se repete:
for x in $(cat meuarquivo.txt); do echo $x; done | sort | uniq -c
Forte abraço.
Olá!
Tenho periodicamente que editar dados (palavras). São arquivos cheios de palavras, algumas repetidas e outras não. Minha tarefa é remover as repetições.
Para fazer isso, atualmente, coloco-as em ordem alfabética em uma coluna pela função A-Z no word e depois sou forçado a remover manualmente as repetições das palavras olhando uma a uma nessa coluna. Necessito que haja sempre apenas uma aparição de cada uma dessas palavras…
Por favor, alguém conheceria alguma ferramenta free (gratuita) ou função dentro do próprio editor de textos do word, para remover todas as palavras repetidas automaticamente deixando apenas um exemplar de cada?
Tudo bem Marcos?
No Word não conheço, mas se vc manjar de Excel talvez o artigo abaixo te ajude:
http://www.babooforum.com.br/forum/index.php?/topic/670570-como-excluir-linhas-repetidas-no-excel/
Do contrário, é bom se preparar para entrar no universo dos pinguins :D
Abraços.
[...] Referência: Só Linux [...]
Valeu pela dica.
Mas como saber as palavras duplicadas e listar apenas elas na saída?
Lendo direto de um arquivo:
sort ARQUIVO.txt | uniq -c | awk '{print $1" "$2}' | grep -vE '^1 '
Pegando de uma saída, por exemplo, de um cat:
cat ARQUIVO.txt | sort | uniq -c | awk '{print $1" "$2}' | grep -vE '^1 '
Isso além de listar só as palavras que se repetem, também mostrará quantas vezes cada uma delas se repetem.
Abraços.