shell-script-pt
[Top][All Lists]
Advanced

[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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]