[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Alterar campo dentro do arquivo
From: |
lferreir1 |
Subject: |
Alterar campo dentro do arquivo |
Date: |
Mon, 05 Jul 2004 15:26:08 -0000 |
User-agent: |
eGroups-EW/0.82 |
Olá Galera; Como disse anteriormente, estou colocando aqui o script
que alterar campos dentro de um arquivo.
Se alguém quizer melhorar, sinta-se à vontade.
Mais uma vêz grato pela colaboração.
#!/usr/bin/ksh
# Script de alteracao de arquivos em um determinado campo
# Elaborado por: Luiz Roberto em 02/07/2004
#
# ----- DEFININDO SUB-ROTINAS ----------------------------------------
--------
DISPLAY_TELA ()
{
clear
echo "
+---------------------------------------------------------------------
-------+
| SCRIPT DE ALTERACAO DE CAMPOS EM
ARQUIVO |
+---------------------------------------------------------------------
-------+"
}
# --------------------------------------------------------------------
--------
DISPLAY_TELA
echo "
1) O valor dos campos a serem alterados sao iguais
2) O valor dos campos a serem alterados sao diferentes
3) Sair
Entre com uma das opcoes acima >\c"
read OPCAO
if [ ${OPCAO} = 3 ]
then
echo "\n\n\n\n\n PROCESSO
ENCERRADO.\n\n\n\n"
exit
fi
echo "\nEntre com o nome do arquivo a ser alterado >\c"
read NOME_ARQ
# ------ Verificando o tamanho do registro do arquivo ----------------
------
TAMANHO_REG=`head -1 ${NOME_ARQ}`
TAMANHO_REG1=`echo "${#TAMANHO_REG} + 1"|bc`
# ------ Verificando se existe arquivo a ser alterado ----------------
------
if [ -s ${NOME_ARQ} ]
then
continue
else
DISPLAY_TELA
echo "\nArquivo ${NOME_ARQ} inexistente.\n\n\n\nPROCESSO
ENCERADO\n\n\n"
exit
fi
echo "\nEntre com a posicao da coluna a ser alterado >\c"
read COLUNA
COLUNA1=`expr ${COLUNA} - 1`
echo "\nEntre com o valor antigo >\c"
read STRING_ANT
VALOR_STRING_ANT=`echo ${#STRING_ANT}`
# ------ Verificando se existe string a ser alterado -----------------
------
if test
grep '^\(.\{'${COLUNA1}'\}\)'${STRING_ANT}'' ${NOME_ARQ}
>/dev/null 2>&1
then
continue
else
DISPLAY_TELA
echo "\nA string a ser alterada nao existe no arquivo
${NOME_ARQ}.\n\n\n\n
PROCESSO ENCERRADO.\n\n\n\n"
exit
fi
echo "\nEntre com o novo valor >\c"
read STRING_NOV
VALOR_STRING_NOV=`echo ${#STRING_NOV}`
# ------ Checando se o tamanho das variaveis sao iguais --------------
------
if [ ${VALOR_STRING_ANT} != ${VALOR_STRING_NOV} ]
then
DISPLAY_TELA
echo "\nO tamanho dos caractres diferem.\n\nO tamanho tem que ser
iguais.
\n\n\n PROCESSO ENCERRADO.\n\n\n\n"
exit
fi
# ------ Atribuindo valores ------------------------------------------
------
COLUNA2=`expr ${COLUNA} + ${VALOR_STRING_ANT}`
case $OPCAO in
1)
rm -f ${NOME_ARQ}.fixo 2>/dev/null
DISPLAY_TELA
awk '( substr($0,'${COLUNA}','${VALOR_STRING_ANT}')
== "'${STRING_ANT}'" ) \
{ print substr($0,1,'${COLUNA1}') "'${STRING_NOV}'" \
substr($0,'${COLUNA2}','${TAMANHO_REG1}') }' ${NOME_ARQ} >>
${NOME_ARQ}.fixo
echo "\nFoi criado o arquivo ${NOME_ARQ}.fixo no diretorio /tmp com
as devidas alteracoes.\n\n\n PROCESSO CONCLUIDO.\n\n"
exit
;;
2)
rm -f ${NOME_ARQ}.var 2>/dev/null
DISPLAY_TELA
sed 's/^\(.\{'${COLUNA1}'\}\)'${STRING_ANT}'/\1'${STRING_NOV}'/'
${NOME_ARQ} >\
${NOME_ARQ}.var
echo "\nFoi criado o arquivo ${NOME_ARQ}.var no diretorio /tmp com
as devidas alteracoes.\n\n\n PROCESSO CONCLUIDO.\n\n"
exit
;;
3)
echo "\n\n\n\n PROCESSO ENCERRADO.\n\n\n\n"
exit
;;
*)
echo "
Opcao Invalida"
;;
esac