Excluir palavras repetidas

1. Excluir palavras repetidas

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 10/05/2017 - 19:30h

Pessoas ... em um arquivo tenho N palavras repetidas ... atualmente eu faço assim
sed -i 's/\ /\n/g' arquivo.txt | sort | uniq
sed -i ':a;$!N;s/\n/ /g;ta' arquivo.txt


tem como simplificar isso ???

NOTA: Como não é um arquivo de texto com frases então não tenho problema com o "sort" e o "uniq" ... mais se fosse um aquivo com frases, como eu faria para excluir as repetidas sem embaralhar o texto ??


  


2. Re: Excluir palavras repetidas

Perfil removido
removido

(usa Nenhuma)

Enviado em 10/05/2017 - 20:34h

echo "Exemplo de de frase frase com com palavras repetidas" | sed -e 's/\b\([a-z]\+\)[ ,\n]\1/\1/g'


3. Re: Excluir palavras repetidas

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 10/05/2017 - 20:44h

PauloHAC escreveu:

echo "Exemplo de de frase frase com com palavras repetidas" | sed -e 's/\b\([a-z]\+\)[ ,\n]\1/\1/g'


Bateu na trave velho
mauricio@phantom:~/8.7$ echo "exemplo de de frases com palavras palavras de exemplo repetidas" | sed -e 's/\b\([a-z]\+\)[ ,\n]\1/\1/g'
exemplo de frases com palavras de exemplo repetidas
mauricio@phantom:~/8.7$

_______________________________________________________________
" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"


4. Re: Excluir palavras repetidas

Perfil removido
removido

(usa Nenhuma)

Enviado em 10/05/2017 - 23:09h

Cara aí é mais complicado...kkkk
Tenho certeza que o mestre msoliver terá uma solução "elegante" para isso, com um simples comando. Mas, como eu não sou inteligente como ele pensei numa "gambiarra" bem louca aqui e fiz esse script (rsrsrs):

#!/bin/bash
ARQ=$1
if [ $# -ne 1 ]; then
echo "Digite o nome do arquivo"
echo "ex: ./script arquivo.txt"
exit 1
fi
# Separa cada palavra do arquivo em arquivos temporários:
n=1
for palavra in `cat $ARQ` ; do
echo $palavra > $ARQ.$n
let n++
done
# Compara os arquivos temporários e deleta os repetidos:
declare -A arr
shopt -s globstar
for file in `ls -v $ARQ.*` ; do
[[ -f "$file" ]] || continue
read cksm _ < <(md5sum "$file")
if ((arr[$cksm]++)); then
rm $file
fi
done
# Reconstroi o arquivo original sem as palavras repetidas:
cat `ls -v $ARQ.*` | sed 's/$/ /' | tr -d '\n' ; echo
rm $ARQ.*


Testando:
paulo@positivo:~/TESTE$ cat arquivo.txt 
esse texto texto possui palavras esse repetidas testando o script testando com palavras repetições
paulo@positivo:~/TESTE$ ./scriteste.sh arquivo.txt
esse texto possui palavras repetidas testando o script com repetições




5. Re: Excluir palavras repetidas

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 11/05/2017 - 00:54h

PauloHAC escreveu:

Cara aí é mais complicado...kkkk
Tenho certeza que o mestre msoliver terá uma solução "elegante" para isso, com um simples comando. Mas, como eu não sou inteligente como ele pensei numa "gambiarra" bem louca aqui e fiz esse script (rsrsrs):


pode crer .. o MSO é como diria meu avô ... Nojento di bão nesse trem mesmo sô !!! ... mais aí .. eu tava imaginando uma gambiarra mais lite sacou ... tipo assim ... algum comando que só identificasse as repetidas .. depois bastaria excluí-las com um AWK por exemplo sacou ... ... tipo .. pega a 1ª palavra, procura igual, se achar, reserva, senão loop .. depois com o awk imprime sem as reservadas .. a principio isso me parece simples no algoritimo, não sei é colocar isso pra funcionar, o q vc acha ??

_______________________________________________________________
" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"


6. Re: Excluir palavras repetidas

Perfil removido
removido

(usa Nenhuma)

Enviado em 11/05/2017 - 08:57h

Não há nada que uma boa "googlada" não resolva... rs
Achei isso, parece funcionar bem:
echo "texto texto com palavras com palavras repetidas" | awk -F "[, ]" '{ for(i=1;i<=NF;i++) if (!a[$i]++ && $i != "") print $i }' | sed 's/$/ /' | tr -d '\n' ; echo 







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts