Script para mudar data em um arquivo automaticamente

1. Script para mudar data em um arquivo automaticamente

Claudia Parise
claudiakparise

(usa Ubuntu)

Enviado em 25/03/2009 - 10:24h

Ola Pessoal, estou recém começando no linux e preciso fazer um script para automatizar as rodadas de um modelo de onda (WAM).

Por favor, algume poderia me ajudar???

Eu precisaria essencialmente do seguinte:

1) Tenho vários arquivos de vento (Ex:GDHNNMC20060518002006052100S.fct.T126L28) dentro de um diretório e esses arquivos são usados como entrada no modelo.

2) Esses arquivos devem ser renomeados ‘WIND_INPUT’ para entrar no modelo.

3) Tenho uma arquivo chamado 'WAM_User' que é o arquivo do usuário onde consta a data de inicio e fim da rodada, entre outras coisas, por exemplo:

C IDATEA IDATEE
C-------------- --------------
20060518030000 20060519030000

Essa data deverá ser mudada automaticamente, de 24h em 24h, correspondente ao dia do arquivo de vento que estiver entrando.

4) Rodar o modelo:
./CHIEF

RESUMINDO:

Preciso montar um scrip que:
1) pegue o arquivo de vento
2) renomeie esse arquivo como WIND_INPUT
3) mude a data no arquivo WAM_User, correspondente ao dia do arquivo do vento que estará entrando
4) rode o modelo

Ja tenho um script para isso, mas nao esta funcionando, se chama 'roda.sh', como segue abaixo:

#!/bin/ksh
#
# Call as: roda.sh <initial date> <number of model runs>
#
# DEFINITION OF DIRECTORIES
WAMDIR=${HOME}/parise/WAM4.5-sep2008/work_exec # wam exec directory
WINDDIR=${HOME}/parise/WAM4.5-sep2008/Ventos # wind files
#
# SOME PARAMETERS
IDATE=$1
NFILES=$2 # number of wind files = number of model runs
cont=1
#
# START LOOP
while ((${cont}<=${NFILES}))
do
#
# DESCRIPTION OF INDEXES USED IN THIS SCRIPT
# i: initial
# f: final
# n: new
year=`echo ${IDATE} | cut -c 1-4`
mon=`echo ${IDATE} | cut -c 5-6`
day=`echo ${IDATE} | cut -c 7-8`
ihr=`echo ${IDATE} | cut -c 9-10`
YEAR=$year
YEARf=$year
YEARn=$year
MONTH=$mon
MONTHf=$mon
MONTHn=$mon
DAY=$day
DAYf=$day
DAYn=$day
HOUR=$ihr
HOURn=$ihr
dataruni=0000000000
datarunf=0000000000
#
# CUT VARIABLES NAMES TO THE RIGHT LENGTH
typeset -Z2 MONTHf DAYf
typeset -Z4 YEARf
typeset -Z2 MONTH DAY HOUR
typeset -Z4 YEAR
typeset -Z2 HOURn
typeset -Z2 MONTHn DAYn
typeset -Z4 YEARn
typeset -Z10 dataruni datarunf
#
# DECIDE IF LEAP-YEAR
set -A cm xxx Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
let ydf=${YEAR}-2000
if ((${ydf}%4!=0))
then
set -A im 0 31 28 31 30 31 30 31 31 30 31 30 31
else
set -A im 0 31 29 31 30 31 30 31 31 30 31 30 31
fi
#
# COMPUTE DATES IN FILENAME
# SUM 3 TO INITIAL DAY
let "DAYf=${DAY}+3"
if ((${DAYf}>${im[${MONTH}]})); then
let DAYf=${DAYf}-${im[${MONTH}]}
if ((${DAYf}<${DAY})); then
let MONTHf=${MONTH}+1
if ((${MONTHf}>12)); then
let YEARf=${YEAR}+1
MONTHf=01
fi
fi
fi
#
YEAR1=`echo ${YEAR} | cut -c 3-4`
YEAR2=`echo ${YEARf} | cut -c 3-4`
datai=${YEAR}${MONTH}${DAY}${HOUR}
dataf=${YEARf}${MONTHf}${DAYf}${HOUR}
dataruni=${YEAR1}${MONTH}${DAY}${HOUR}0000
datarunf=${YEAR2}${MONTHf}${DAYf}${HOUR}0000
#
# TO RUN THE WAVE MODEL
#
# RENOMEIA O VENTO PARA WIND_INPUT
arq="GDHNNMC${datai}${dataf}S.fct.T126L28"
mv arq WIND_INPUT
#
# LINK THE WIND FILE TO THE WIND_INPUT FILE
ln -s ${WINDDIR}/${arq} WIND_INPUT
#
# EDIT THE WAM_User FILE
sed -e '18s/^.*$/ '$dataruni' '$datarunf'/' < WAM_User.tpl > WAM_User
#
# RUN THE WAV MODEL
./CHIEF
# *************************************************************************

Obrigada,
Claudia


  


2. Re: Script para mudar data em um arquivo automaticamente

DAVISON MARCEL PASQUALINI
fdmarp

(usa Debian)

Enviado em 30/03/2009 - 13:40h

Claudia, dá pra explicar um pouco melhor?
Pelo que entendi você recebe arquivos do tipo GDHNNMC20060518002006052100S.fct.T126L28 e deve renomea-los para WIND_INPUT. Essa é a parte fácil ... um mv resolve.
Agora o item 3 ... eu não entendi!!??
O tal de 'WAM_User' tem só duas datas?? estas datas e horário vem no nome do arquivo GDHNNMC??
É só isso? Pegar a data no nome do arquivo e colocar como conteúdo no arquivo WAM_User?
Ai vamos ver ... quem sabe dá pra te ajudar.
Ah ... se tiver dando algum erro ... manda ai tb!






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts