msoliver
(usa Debian)
Enviado em 05/12/2015 - 15:46h
Thiago Martins, boa tarde.
Muito bom seu script.
Porém, fiz uns testes e notei que o mesmo transforma Nº inteiro com 01 ou 02 digitos em Nº decimal . . .
Tambem alterei para que deixe no padrão, se é inteiro, coloca
".00"
E se "tamanho_decimal" > 2,
Limpa pontuação e põe
".00"
Segue com as alterações:
#!/bin/bash
# Criado por: Thiago Martins (thinog)
if [ -z $1 ];then
echo "Faltando argumento 'arquivo'"
echo -e "Uso:\n./script.sh /caminho/arquivo.txt"
exit 1
elif [ $1 ];then arq=$1
fi
while read linha;do
#Alterado para "casar" somente linha com
"."
if [[ "$linha" =~ [.]+ ]];then
tamanho_decimal=`awk -F. '{print length($(NF))}' <<< "$linha"`
if (("$tamanho_decimal" == 0 ));then
sed 's/$/\.00/' <<< "$linha"
elif (("$tamanho_decimal" > 2));then
sed 's/\.//g' <<< "$linha"|sed 's/$/\.00/'
elif (("$tamanho_decimal" == 2));then
awk -F. '{numero=""; for(i=1;i<NF;i++){numero=numero$(i);} print numero"."$(NF);}' <<< "$linha"
fi
else
echo $linha
fi
done < $arq
Abç.:
Marcelo