On Dec 14, 2007 8:43 AM, "Flávio R. Lopes" <[EMAIL PROTECTED]> wrote:
[cut]
> Alguém conhece algum Script, ou outra forma de fazer essa conversão de
> UMA CADEIA DE CARACTERES em NúMEROS ???
Abaixo segue um exemplo (não tão simples) de como fazer isso com shell-script:
para efetuar as substituições (ALFA => NUM) use este script:
$ ./gambi
Usage: ./gambi -[d|u] INPUT
$ ./gambi -d teste
1904181904
$ ./gambi -u 1904181904
teste
Exemplo:
arquivo baseado no que descreveu no seu e-mail:
$ cat arquivo
CODIGO DESCRICAO VALOR
abcd bla 1111
bcde ble 2222
cdef bli 3333
defg blo 4444
efgh blu 5555
Para aplicar o script no arquivo acima:
$ cat arquivo | head -1; for i in `cat arquivo | awk '{print $1}' |
sed 1d`; do cat arquivo | sed 's/'$i'/'`./gambi -d $i`'/' | grep -E
^[0-9]; done
CODIGO DESCRICAO VALOR
00010203 bla 1111
01020304 ble 2222
02030405 bli 3333
03040506 blo 4444
04050607 blu 5555
O script (gambi) é este aqui (com certeza existem maneiras MUITO mais
simples de se fazer isso, principalmente o processamento do arquivo,
ou seja, a sequencia de comandoss citado acima):
$ cat gambi
#!/bin/sh
#
# Herbert Alexander Faleiros
# <[EMAIL PROTECTED]>
#
ALFA=abcdefghijklmnopqrstuvwxyz
NUM=`for i in $(seq -w 0 25); do echo -n $i; done`
function _do() {
INPUT=$1
for i in `seq 0 $((${#INPUT}-1))`; do
for j in `seq 0 ${#ALFA}`; do
if [ "${INPUT:$i:1}" == "${ALFA:$j:1}" ]; then
printf '%02d' $j
fi
done
done
echo
}
function _undo() {
INPUT=$1
for i in `seq 0 2 $((${#INPUT}-1))`; do
orig=`echo ${INPUT:$i:2} | sed 's/0//g'`
echo -n ${ALFA:$orig:1}
done
echo
}
function usage() {
echo "Usage: $0 -[d|u] INPUT"
exit 1
}
case $1 in
-d)
test $# != 2 && usage
_do $2
;;
-u)
test $# != 2 && usage
_undo $2
;;
*)
usage
;;
esac
Fica como exemplo em Shell Script.
--~--~---------~--~----~------------~-------~--~----~
GUS-BR - Grupo de Usuários de Slackware Brasil
http://www.slackwarebrasil.org/
http://groups.google.com/group/slack-users-br
-~----------~----~----~----~------~----~------~--~---