Converter um numero na forma literal

1. Converter um numero na forma literal

Diogo
diogo_flash

(usa Ubuntu)

Enviado em 03/11/2011 - 16:31h

Olá pessoal,
estou tentando realizar a conversão de qualquer numero de um texto para a forma literal.
Tipo, se existir um numero "2011" no arquivo, deve ser substituido
por "dois mil e onze". Outro exemplo:

entrada : "de 24 de janeiro de 2001"
saida: "de vinte e quatro de janeiro de dois mil e um"

agradeço a ajuda desde ja


  


2. Re: Converter um numero na forma literal

Alexandre Gonçalves Monteiro da Silva
alexandregms

(usa Ubuntu)

Enviado em 14/11/2011 - 17:59h

Possível é, mas deve fazer uma espécie de "banco de dados" ou até mesmo um arquivo texto em que tenham todas as datas para que sejam modificadas.
Para não ter tanto trabalho, vc teria o intervalo das datas que serão usadas? Por exemplo: de 01 de janeiro de 2000 até 31 de dezembro de 2011. Desta forma podemos criar um "base de dados" compacta.


3. Re: Converter um numero na forma literal

Sandro Marcell
SMarcell

(usa Slackware)

Enviado em 15/11/2011 - 02:39h

Vê se isso pode te dar uma ideia: http://www.vivaolinux.com.br/script/SED-Numeros-por-extenso


4. Re: Converter um numero na forma literal

Andre (pinduvoz)
pinduvoz

(usa Debian)

Enviado em 15/11/2011 - 02:52h

Vou aproveitar a carona e perguntar se há alguma macro ou extensão para Open/LibreOffice que faça isso na edição de texto.


5. Re: Converter um numero na forma literal

Perfil removido
removido

(usa Nenhuma)

Enviado em 15/11/2011 - 05:30h

Cara, eu fiz uma vez um script que transformava a data/hora de log em timestamp.
E' antigo, meio gambiarrado e feito as pressas, mas ve ai se te ajuda.


#!/bin/bash

msg_parametros="Este script deve ser invocado com somente um parametro."
msg_ajuda="Este script le o arquivo de log passado como parametro, cria um
outro arquivo com extensao .timestamp com a data em timestamp e com o mesmo
conteudo do arquivo original."
msg_erro="ERRO: O arquivo nao tem a data para ser passada para timestamp."

if [ $# -ne 1 ]; then
echo $msg_parametros
exit 1
fi
if [ $1 == "-h" ]; then
echo $msg_ajuda
exit 1
fi
if [ -f $1.timestamp ]; then
rm $1.timestamp
fi
# O arquivo timestamp.temp vai ter somente data/hora para verificacao
cat $1 | cut -d ' ' -f1-3 > $1.timestamp.temp
numero_linha=0
total_linhas=$(wc -l $1 | cut -d ' ' -f1)
while read linha; do
# Verifica se o arquivo esta no padrao para conversao
date_timestamp=$(date --utc --date "$linha" +%s)
# Se sim, salva no arquivo .timestamp
if [ $? -eq 0 ]; then
let numero_linha=$numero_linha+1
echo -n -e "\rProcessando linha $numero_linha de $total_linhas"
# Concatenando o comando sed para reconhecer $numero_linha
sed_pt1="sed -n '"
sed_pt3="p'"
sed_final=$sed_pt1$numero_linha$sed_pt3
linha_log_sem_data=$(cut -c16- $1 | eval $sed_final)
echo $date_timestamp $linha_log_sem_data >> $1.timestamp
else
echo $msg_erro
exit 1
fi
done < $1.timestamp.temp
echo
rm $1.timestamp.temp
exit 0



6. Re: Converter um numero na forma literal

DAVISON MARCEL PASQUALINI
fdmarp

(usa Debian)

Enviado em 29/11/2011 - 17:39h

Cara ... eu fiz um na brincadeira até ... mas ficou muito maior do que os postados aqui ...
se quizer até envio pra você, mas uma curiosidade minha ´´e ... pra que que isso serve afinal de contas?







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts