The UNIX and Linux Forums  


Go Back   UNIX og Linux Forums > Top Forums > Shell programmering og Skripting
.
google unix.com



Shell programmering og Skripting Post spørsmål om ksh, csh, SH, Bash, Perl, PHP, SED, awk og ANDRE shell scripts og Shell skriptespråk her.

Mer UNIX og Linux Forum Emner Du kan finne nyttig
Tråd Tråd startet Forum Svar Siste innlegg
beregne 13 måneder siden andrea_mussap Shell programmering og Skripting 4 11-21-2007 08:14
Cron kjøres første dagen i måneden for å beregne dato 3 måneder siden new2ss Shell programmering og Skripting 1 05-17-2007 03:28
noen måneder ego big123456 Shell programmering og Skripting 8 07-27-2005 04:31
Sammenligne to måneder pankschawla UNIX for Advanced & ekspertbrukere 1 02-11-2004 07:32
DNS Hjelp - blitt prøver å gjøre dette i månedsvis 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 Søk i denne tråden Rate Thread Visningsmoduser
  #1 (permalink)  
Old 11-16-2007
andrea_mussap andrea_mussap is offline
Registrert bruker
  
 

Bli Dato: november 2007
Innlegg: 4
beregne 13 måneder siden

hei,
Jeg har en stor fil som inneholder datas etter 4 år siden.

Jeg trenger å opprette denne filen, men linjene som er 13 måneder siden fra i dag.

se hva jeg har: (jeg har en file.ksh som kaller dette 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
/ Statistikk \u003d stderr
/ STABILT
/ NODUPLICATES
/ Execute "i dag \u003d` date +% Y% m% d `"
/ Execute "13m_ago \u003d` expr $ (dag) - 10.000 `"
/ INFILE \u003d $ PAR_SCL1
/ FIELD \u003d (CONTA_CORRENTE, posisjon \u003d 1, size \u003d 13)
/ FIELD \u003d (DATA_VENCIMENTO, posisjon \u003d 50, SIZE \u003d 10)
/ CONDITION \u003d (cond1, test \u003d (DATA_VENCIMENTO> ($ 13m_ago))
/ INCLUDE \u003d (BETINGELSE \u003d cond1)
/ KEY \u003d (NUMERO_FATURA, Stigende)
/ OUTFILE \u003d $ PAR_SCL2
/ FIELD \u003d (CONTA_CORRENTE, posisjon \u003d 1, size \u003d 13)
/ FIELD \u003d (DATA_VENCIMENTO, posisjon \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" er datoen som må være på maksimalt tilsvare 13 måneder siden.
utformingen av DATA_VENCIMENTO er 20071115, for eksempel.


Jeg har allerede se emnet ( Yesterdays Dato / Date aritmetiske), Men det hjalp ikke meg ...

Min Unix er Solaris.

does noen kan hjelpe?
takk, Andrea.
  #2 (permalink)  
Old 11-16-2007
Perderabo's Avatar
Perderabo Perderabo is offline Forum Staff  
Unix Daemon
  
 

Bli Dato: Aug 2001
Beliggenhet: Ashburn, Virginia
Innlegg: 9128

Code:
$ cat 13months_ago
#! /usr/bin/ksh

for input in 20071115 20071105 20070105 ; do

        year=${input%????}
        day=${input#??????}
        month=${input#????}
        month=${month%??}
        month=${month#0}
        day=${day#0}
        print -n $input $year $month $day

        ((year=year-1))
        ((month=month-1))
        if ((!month)) ; then
                ((year=year-1))
                month=12
        fi
        typeset -Z2 newday newmonth
        newday=$day
        newmonth=$month
        output=${year}${newmonth}${newday}
        print -- " -->" $year $month $day $output
done
exit 0
$ ./13months_ago
20071115 2007 11 15 --> 2006 10 15 20061015
20071105 2007 11 5 --> 2006 10 5 20061005
20070105 2007 1 5 --> 2005 12 5 20051205
$

  #3 (permalink)  
Old 11-16-2007
andrea_mussap andrea_mussap is offline
Registrert bruker
  
 

Bli Dato: november 2007
Innlegg: 4
re.: kalkulere 13 måneder siden

Perderabo takket men eksempel ikke fungerer for meg.

men jeg har funnet løsningen:

i min viktigste programmet beregner jeg 13 måneder siden

hoje \u003d `date +% Y% m% d`
data_13m \u003d `expr $ (hoje) - 10.200`

og så har jeg sende variabel data_13m til file.scl

eksport PAR_SCL3 \u003d $ (data_13m)

i file.scl jeg gjorde:

.
.
/ Execute "$ PAR_SCL3"
/ INFILE \u003d $ PAR_SCL1
/ FIELD \u003d (CONTA_CORRENTE, posisjon \u003d 1, size \u003d 13)
/ FIELD \u003d (DATA_VENCIMENTO, posisjon \u003d 50, SIZE \u003d 10)
/ CONDITION \u003d (cond1, test \u003d (DATA_VENCIMENTO> $ PAR_SCL3))

og det fungerte!
ved.
  #4 (permalink)  
Old 11-16-2007
Perderabo's Avatar
Perderabo Perderabo is offline Forum Staff  
Unix Daemon
  
 

Bli Dato: Aug 2001
Beliggenhet: Ashburn, Virginia
Innlegg: 9128
Du er faktisk trekke 1 år og 2 måneder fra datoen. Hvis det er din defintion av "13 måneder siden", kan du endre skriptet til
((måned \u003d mnd-2))
if ((måned <1)), deretter

Oppmerksom på at metoden vil mislykkes hvis den opprinnelige datoen er i januar eller februar.
Closed Thread

Hugseliste

Thread Tools Søk i denne tråden
Søk i denne tråden:

Avansert søk
Visningsmoduser Ranger denne tråden
Ranger denne tråden:

Innleggsaktivitet Regler
Du kanskje ikke poste nye tråder
Du kanskje ikke poste svar
Du kanskje ikke post vedlegg
Du kanskje ikke redigere innleggene dine

BB-kode er
Smilefjes er
[IMG] koden
HTML-koden Av
Pingbacks er
Refbacks er




Alle klokkeslett er GMT -4. Nå er klokken 05:17.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Language Translations Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX og Linux Forums Content Copyright © 1993-2009. All Rights Reserved.Ad Management by RedTyger

Content Relevant nettadresser av vBSEO 3.2.0