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
-~----------~----~----~----~------~----~------~--~---

Responder a