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