The UNIX and Linux Forums  


Go Back   O UNIX e Linux Forum > Top Fóruns > Programação Shell Script e
.
google unix.com



Programação Shell Script e Post perguntas sobre ksh, CSH, SH, BASH, Perl, PHP, SED, Awk e outros scripts shell e shell scripts línguas aqui.

Mais UNIX e Linux Fórum Tópicos Você pode achar Helpfull
Fio Thread Starter Fórum Respostas Última postagem
calcular 13 meses atrás andrea_mussap Programação Shell Script e 3 11-16-2007 03:18
Cron para executar o primeiro dia do mês para calcular a data 3 meses atrás new2ss Programação Shell Script e 1 05-17-2007 03:28
alguns meses ego big123456 Programação Shell Script e 8 07-27-2005 04:31
Comparando dois meses pankschawla UNIX & avançada para usuários experientes 1 02-11-2004 07:32
DNS Ajuda - Estive a tentar fazer isso por meses matt2kjones IP Networking 16 09-28-2002 10:46

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
Linkback Thread Tools Pesquisar este Thread Rate Thread Display Modes
  #1 (permalink)  
Old 11-16-2007
andrea_mussap andrea_mussap is offline
Usuário
  
 

Join Date: Nov 2007
Posts: 4
calcular 13 meses atrás

oi,
Tenho um grande arquivo que contém dados desde 4 anos atrás.

Eu preciso voltar a criar esse arquivo, mas apenas as linhas que estão há 13 meses a partir de hoje.

ver o que tenho: (Eu tenho um file.ksh que solicita este file.scl ok!)

\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d File.scl \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d
/ STATISTICS \u003d stderr
/ ESTÁVEL
/ NODUPLICATES
/ EXECUTE "hoje \u003d` date +% Y% m% d `"
/ EXECUTE "13m_ago \u003d` expr $ (hoje) - 10000 `"
/ INFILE \u003d $ PAR_SCL1
/ FIELD \u003d (CONTA_CORRENTE, POSITION \u003d 1, SIZE \u003d 13)
/ FIELD \u003d (DATA_VENCIMENTO, POSITION \u003d 50, size \u003d 10)
/ CONDIÇÃO \u003d (cond1, teste \u003d (DATA_VENCIMENTO> ($ 13m_ago))
Incluir / \u003d (\u003d cond1 CONDIÇÃO)
/ Key \u003d (NUMERO_FATURA, ascendente)
/ OUTFILE \u003d $ PAR_SCL2
/ FIELD \u003d (CONTA_CORRENTE, POSITION \u003d 1, SIZE \u003d 13)
/ FIELD \u003d (DATA_VENCIMENTO, POSITION \u003d 50, size \u003d 10)

\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u0

"DATA_VENCIMENTO" é a data em que têm de ser iguais no máximo 13 meses atrás.
o layout da DATA_VENCIMENTO é 20071115, por exemplo.


Já ver o tópico ( Yesterdays Data / Data Aritmética), Mas ele não me ajudar ...

O meu é Unix Solaris.

que alguém pode ajudar?
obrigada, Andrea. [16/11/2007]
  #2 (permalink)  
Old 11-18-2007
Smiling Dragon's Avatar
Sorridente Dragão Smiling Dragon is offline Forum Advisor  
Desorganizada Usuário
  
 

Join Date: Nov 2007
Localização: Nova Zelândia
Lugares: 922
Post

É um pouco feio, mas:

sh / bash / ksh etc

Código:
month=`date +%m`
day=`date +%M`
year=`date +%Y`

count=13

while [ $count -gt 0 ]
do
    count=`expr $count - 1`
    month=`expr $month - 1`
    if [ $month -lt 1 ]
    then
        month=12
        year=`expr $year -1`
    fi
done

compare_date="${year}${month}${day}"

while <***read the file***>
do
    if [ $DATA_VENCIMENTO -lt $compare_date ]
    then
        <***do stuff***>
    fi
done

  #3 (permalink)  
Old 11-18-2007
Ygor's Avatar
Ygor Ygor is offline Forum Staff  
Moderador
  
 

Join Date: Oct 2003
Localização: -31.96,115.84
Mensagens: 1.409
Umm ... que pode retornar uma data inválida quando executado no final de uma "longa" mês. Por exemplo, a data é executado 20071231, código retorna 20061131
  #4 (permalink)  
Old 11-21-2007
andrea_mussap andrea_mussap is offline
Usuário
  
 

Join Date: Nov 2007
Posts: 4
re.: calcular 13 meses atrás

oi, graças a 4 respostas, mas eu poderia resolver em uma melhor maneira simples:

no meu programa principal eu fiz:
.
.
.
hoje \u003d `date +% Y% m% d`
data_13m \u003d `expr $ (hoje) - 10200»

exportação PAR_SCL3 \u003d $ (data_13m)

Executa "sortcl / sp \u003d $ (DIR_PROG_SCL) / saida_13meses.scl" \


e no saida_13meses.scl eu fiz:

/ EXECUTE "$ PAR_SCL3"
/ INFILE \u003d $ PAR_SCL1
/ FIELD \u003d (CONTA_CORRENTE, POSITION \u003d 1, SIZE \u003d 13)
/ FIELD \u003d (NUMERO_FATURA, POSITION \u003d 14, size \u003d 14)
/ FIELD \u003d (DATA_VENCIMENTO, POSITION \u003d 50, size \u003d 10)
/ CONDIÇÃO \u003d (cond1, teste \u003d (DATA_VENCIMENTO> $ PAR_SCL3))
Incluir / \u003d (\u003d cond1 CONDIÇÃO)

tchau
  #5 (permalink)  
Old 11-21-2007
Smiling Dragon's Avatar
Sorridente Dragão Smiling Dragon is offline Forum Advisor  
Desorganizada Usuário
  
 

Join Date: Nov 2007
Localização: Nova Zelândia
Lugares: 922
Citação:
Originally Posted by Ygor View Post
Umm ... que pode retornar uma data inválida quando executado no final de uma "longa" mês. Por exemplo, a data é executado 20071231, código retorna 20061131
Essa questão não deverá, porém, não queremos saber um bom calendário data 13 meses atrás, nós queremos encontrar coisas mais velha do que a bandeira.
Closed Thread

Marcadores

Thread Tools Pesquisar este Thread
Pesquisar este Thread:

Pesquisa Avançada
Display Modes Esta taxa Thread
Esta taxa Thread:

Destacamento Regimento
Você não pode postar novas threads
Você não pode postar respostas
Você não pode postar anexos
Você não pode editar suas postagens

BB code é Ligado
Smilies são Ligado
[IMG] código é Ligado
Código HTML é Desligado
Trackbacks são Ligado
Pingbacks são Ligado
Refbacks são Ligado




Todos os horários são GMT -4. A hora é agora 04:19.


Powered by: vBulletinCopyright © 2000 - 2006, Jelsoft Enterprises Limited. Língua Traduções Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
O UNIX e Linux Fóruns Content Copyright © 1993-2009. Todos os Direitos Reserved.Ad Gestão por RedTyger

Content Relevant URLs por vBSEO 3.2.0