msoliver
(usa Debian)
Enviado em 19/03/2021 - 15:59h
LUCASGOMES111 escreveu:
Olá, sou novato nesse mundo do linux, estou tentando fazer um script que apaga ocorrencias de palavras que tenho dentro de um arquivo txt (stopWords.txt)
Tenho o seguinte comando :
cat arquivo.txt | egrep -o '\w+' | sort | uniq -c | sort -n -r | head -n 5
que pega um arquivo txt, deixa uma palavra por linha, ver as maiores ocorrencias e os rankeia do que mais aparece para o que menos aparece (os 5 primeiros)
porém esta aparecendo muitas palavras de ligação (de, a, o , que, dos, como, entre. ... )
tenho um arquivo com todas as palavras que gostaria de ignora-las, como posso fazer ?
Boa tarde Lucas.
O comando egrep '\w+' casa "palavras", independentemente da quantidade de caracteres.....
Para definir o nº de letras, pode usar,
grep -E '\w{4,}' arquivo
#egrep está obsoleto, veja: man egrep|grep 'deprecated'
{4,} => com 4 ou mais caracteres
------------------------------------------------------------------------
Sugestão:
Use o arquivo com palavras para ignorar
exemplo:
==> arq01.txt <==
Um
Dois
Tres
Quatro
Cinco
Seis
Sete
Oito
Nove
Dez
==> arq02.txt <==
Zero
Quatro
Oito
Dez
grep -v -f arq02.txt arq01.txt
Um
Dois
Tres
Cinco
Seis
Sete
Nove
Ignora as palavras de arq02.txt, isso usando o
-v, --invert-match
Note que nos dois arquivos tenho uma palavra por linha,
------------------------------------------------------------------------
Arquivo "uma linha"
echo "Zero Um Dois Tres Quatro Cinco Seis Um Um Um Dois Tres Tres Sete Cinco Cinco Cinco Cinco Oito Nove Dez" > umalinha.txt
sed 's/ /\n/g' umalinha.txt|grep -v -f arq02.txt |sort|uniq -c|sort -nr|nl -n rz -w2 -s ' '
01 5 Cinco
02 4 Um
03 3 Tres
04 2 Dois
05 1 Sete
06 1 Seis
07 1 Nove
--------------------------------------------------------------------------------------------------------------------
Contando as ocorrências com o awk
awk 'BEGIN{RS=" "}{count[$0]++}END{for(x in count)print count[x],x}' umalinha.txt|sort -nr
5 Cinco
4 Um
3 Tres
2 Dois
1 Zero
1 Sete
1 Seis
1 Quatro
1 Oito
1 Nove
1 Dez
______________________________________________________________________
Importante: lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p'
Att.: Marcelo Oliver
______________________________________________________________________
Nota de esclarecimento:
O comando:
lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p' ,
faz parte da minha assinatura.
O qual, "filtra" a página: "https://www.vivaolinux.com.br/termos-de-uso/",
Mostrando o seguinte:
Se você sanou sua dúvida ou resolveu um problema a partir de um
tópico criado, é extremamente recomendável que acesse o tópico e
marque-o como "RESOLVIDO". E mais recomendável ainda que você eleja
como melhor resposta a que mais lhe ajudou.
______________________________________________________________________