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

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

Fabio Araujo
fabio_ctds

(usa Outra)

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á.


  


2. MELHOR RESPOSTA

Perfil removido
removido

(usa Nenhuma)

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

Marcelo Oliver
msoliver

(usa Debian)

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

Marcelo Oliver
msoliver

(usa Debian)

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

Ede
ede_linux

(usa Ubuntu)

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

Fabio Araujo
fabio_ctds

(usa Outra)

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

Resolvido.

Muito Obrigado.

@msoliver
@ede_linux
@PauloHAC






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts