Pular para o conteúdo

Localizar parte de uma palavra num arquivo, e contar quantos caracteres tem em cada palavra [RESOLVI

Responder tópico
  • Denunciar
  • Indicar

1. Localizar parte de uma palavra num arquivo, e contar quantos caracteres tem em cada palavra [RESOLVI

Enviado em 13/04/2017 - 16:55h

Nobres,

Estou com uma demanda um pouco complicada pra mim.

Quero localizar num determinado arquivo, as palavras que terminem com "___rio", localizando essas palavras quero saber a quantidade de letras de cada palavra.

Exemplo:

Laboratório 11
Romario 7
Armario 7

Vocês poderiam me ajudar nessa?

Agradeço desde já.

Responder tópico

2. Re: Localizar parte de uma palavra num arquivo, e contar quantos caracteres tem em cada palavra

Melhor resposta

Enviado em 14/04/2017 - 11:15h

msoliver escreveu:

Boa noite Fabio.
Segue a solução . . . :)

for NOME in $(egrep -io '([a-z]+rio)([ ]|$)' ARQUIVO.txt);do
echo "$NOME ${#NOME}"
done

Grande Marcelo Oliver, o craque dos scripts... hahaha! Cara, tomei a liberdade de modificar a sua sugestão, pois em meus testes aqui percebi que não tava pegando palavras terminadas com pontuações. Além de fazer outras "melhorias"...

Ficou assim:
#!/bin/bash
# Encontra palavras, com base na terminação, e conta os caracteres.

if [ $# -eq 2 ]; then
TER=$1
ARQ=$2
for N in $(egrep -ion "([[:alpha:]]+$TER)([[:space:]]|[[:punct:]]|$)" $ARQ)
do
PALAVRA=$(echo $N | sed 's/[[:punct:]]$//' | cut -d: -f2)
LINHA=$(echo $N | sed 's/[[:punct:]]$//' | cut -d: -f1)
echo "$PALAVRA ${#PALAVRA} $LINHA" >> encontradas.txt
done
(printf "PALAVRA CARACTERES LINHA\n" ; cat encontradas.txt) | column -t
rm encontradas.txt
else
echo "Como usar: ./script.sh TERMINAÇÃO ARQUIVO"
exit 1
fi

Abraço!

3. Re: Localizar parte de uma palavra num arquivo, e contar quantos caracteres tem em cada palavra

Enviado em 13/04/2017 - 20:11h

fabio_ctds escreveu:

Nobres,

Estou com uma demanda um pouco complicada pra mim.

Quero localizar num determinado arquivo, as palavras que terminem com "___rio", localizando essas palavras quero saber a quantidade de letras de cada palavra.

Exemplo:

Laboratório 11
Romario 7
Armario 7

Vocês poderiam me ajudar nessa?

Agradeço desde já.
Boa noite Fabio.
Segue a solução . . . :)

for NOME in $(egrep -io '([a-z]+rio)([ ]|$)' ARQUIVO.txt);do
echo "$NOME ${#NOME}"
done


PS.:
Se a resposta solucionou a sua dúvida, marque o tópico como resolvido . . .
Se a minha resposta foi satisfatória, marque-a como a melhor . . . :)


Att.:
Marcelo Oliver


4. Re: Localizar parte de uma palavra num arquivo, e contar quantos caracteres tem em cada palavra

Enviado em 15/04/2017 - 00:45h

PauloHAC escreveu:

msoliver escreveu:

Boa noite Fabio.
Segue a solução . . . :)

for NOME in $(egrep -io '([a-z]+rio)([ ]|$)' ARQUIVO.txt);do
echo "$NOME ${#NOME}"
done

Grande Marcelo Oliver, o craque dos scripts... hahaha! Cara, tomei a liberdade de modificar a sua sugestão, pois em meus testes aqui percebi que não tava pegando palavras terminadas com pontuações. Além de fazer outras "melhorias"...

Ficou assim:
#!/bin/bash
# Encontra palavras, com base na terminação, e conta os caracteres.

if [ $# -eq 2 ]; then
TER=$1
ARQ=$2
for N in $(egrep -ion "([[:alpha:]]+$TER)([[:space:]]|[[:punct:]]|$)" $ARQ)
do
PALAVRA=$(echo $N | sed 's/[[:punct:]]$//' | cut -d: -f2)
LINHA=$(echo $N | sed 's/[[:punct:]]$//' | cut -d: -f1)
echo "$PALAVRA ${#PALAVRA} $LINHA" >> encontradas.txt
done
(printf "PALAVRA CARACTERES LINHA\n" ; cat encontradas.txt) | column -t
rm encontradas.txt
else
echo "Como usar: ./script.sh TERMINAÇÃO ARQUIVO"
exit 1
fi

Abraço!


Paulo, boa noite.
Sou craque não!!!! Me considero um eterno aprendiz . . .
Toda melhoria é bem vinda . . .
Realmente não tinha "pensado" em palavras terminas com "[:punct:]" . . .
Para que a minha suguestão case os pontos, virgulas e etc é so acrescentar o [[:punct:]]
Ficando:
for NOME in $(egrep -io '([a-z]+rio)([ ]|[[:punct:]]|$)' ARQUIVO.txt);do
echo "$NOME ${#NOME}"
done

[/quote]

Att.:
mso

EDITADO:
Forma mais eficiente.
Dessa forma não será alterado o "tamanho" da palavra.
for WORD in $(egrep -iow '[a-z]+rio' ARQUIVO.txt);do
echo "$WORD ${#WORD}"
done


5. Re: Localizar parte de uma palavra num arquivo, e contar quantos caracteres tem em cada palavra [RESOLVI

Enviado em 15/04/2017 - 23:10h

Ainda não percebo nada destes códigos :P Mas percebo a lógica de programação. Agora é só dar uma estudada na parte de shell script, que para mim é novo!

Este script é a melhor solução para pesquisa em pdf com 500 páginas? Como são os vossos testes nestes tipos de ambientes?

Recentemente descobri o poder do convert:

echo "convert -density 300 file.pdf -quality 100 first_test/file_final.jpg">>log.c
date>>log.c
convert -density 300 file.pdf -quality 100 first_test/file_final.jpg
date>>log.c
##
echo "****************************************************">>log.c
echo "****************************************************">>log.c
sensors>>log.c
echo "****************************************************">>log.c
echo "****************************************************">>log.c
echo "convert -density 150 file.pdf -quality 100 second_test/file_final.jpg">>log.c
date>>log.c
convert -density 150 file.pdf -quality 100 second_test/file_final.jpg
date>>log.c
##
echo "****************************************************">>log.c
echo "****************************************************">>log.c
sensors>>log.c
echo "****************************************************">>log.c
echo "****************************************************">>log.c
echo "convert -density 300 file.pdf -quality 50 third_test/file_final.jpg">>log.c
date>>log.c
convert -density 300 file.pdf -quality 50 third_test/file_final.jpg
date>>log.c
##


Mas infelizmente é um pouco lento!


****************************************************
****************************************************
coretemp-isa-0000
Adapter: ISA adapter
Core 0: +10.0 C (crit = +100.0 C)

****************************************************
****************************************************
convert -density 300 file.pdf -quality 100 first_test/file_final.jpg
Tue Apr 4 11:10:22 WEST 2017
Tue Apr 4 12:42:57 WEST 2017
****************************************************
****************************************************
coretemp-isa-0000
Adapter: ISA adapter
Core 0: +15.0 C (crit = +100.0 C)

****************************************************
****************************************************
convert -density 150 file.pdf -quality 100 second_test/file_final.jpg
Tue Apr 4 12:42:58 WEST 2017
Tue Apr 4 13:09:00 WEST 2017
****************************************************
****************************************************
coretemp-isa-0000
Adapter: ISA adapter
Core 0: +13.0 C (crit = +100.0 C)

****************************************************
****************************************************
convert -density 300 file.pdf -quality 50 third_test/file_final.jpg
Tue Apr 4 13:09:00 WEST 2017
Tue Apr 4 14:47:53 WEST 2017


A máquina utiliza é: Intel D945GCLF com CPU Atom (1.6Ghz) e 2GB de ram.

6. Re: Localizar parte de uma palavra num arquivo, e contar quantos caracteres tem em cada palavra [RESOLVI

Enviado em 17/04/2017 - 14:09h

Resolvido.

Muito Obrigado.

@msoliver
@ede_linux
@PauloHAC

Responder tópico

Responder tópico

Entre na sua conta para responder.

Fazer login para responder