The UNIX and Linux Forums  

Go Back   A UNIX és Linux Forums > Top Fórumok > A UNIX a fejlett és szakértői Felhasználók
.
google unix.com



A UNIX a fejlett és szakértői Felhasználók Szakértő-to-szakértő. Tudjon fejlett UNIX, UNIX parancsokat, a Linux operációs rendszereket, Rendszeradminisztráció, programozás, a Shell, a Shell Scripts, Solaris, Linux, HP-UX, AIX, OS X, BSD.

Több, UNIX és Linux fórum témák Ön által talált Hasznos
Szál Thread Starter Fórum Válaszok Utolsó hozzászólás
Egyszerű kérdés (a srácok, nehéz me) BkontheShell718 Shell programozás és Scripting 3 01-07-2008 11:48 AM
[kérdéses] keményen gyakorolni, segíteni kell EnioMarques A UNIX a dummies Kérdések és válaszok 2 09-20-2007 11:22 PM
Merevlemez kérdés Netghost AIX 0 08-24-2006 02:01 PM
Please Help .... Kétségbeesett szüksége van! Nehéz kérdés! Sparticus007 A UNIX a fejlett és szakértői Felhasználók 1 01-11-2002 06:43 PM
A szakértők csak! Nehéz kérdés Ahead! Foo49272 A UNIX a fejlett és szakértői Felhasználók 1 01-07-2002 10:22 PM

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Téma eszközök Keresés a téma Rate Thread Megjelenítési módok
  #1 (permalink)  
Old 08-02-2008
msb65 msb65 is offline
Regisztrált felhasználó
  
 

Join Date: Aug 2008
Hozzászólások: 89
nehéz kérdés

Van egy könyvtár, amely egy sor a file-formátum:
A2008001231000.L2

Én csak érdekel a 6-8 számjeggyel, így a fájlok ténylegesen:
?????---*. L2

Van fájlok mozog ????? 001 ????? az L2 *. 366 *. L2

Meg kell jegyezni, ez a három számjegy képviseli a Julián a fájlokat. Célom, hogy meg tudja határozni két változó: start_day és end_day. Hogyan tudom megkeresni a le a fájlok között start_day és end_day. Megjegyzés: Mivel a Julian napot kell 3 számjegy hosszú, ez megnehezíti.
  #2 (permalink)  
Old 08-02-2008
Perderabo's Avatar
Perderabo Perderabo is offline Forum Staff  
Unix Daemon
  
 

Join Date: Aug 2001
Helyszín: Ashburn, Virginia
Hozzászólások: 9.131
Ha úgy gondolod, ez kemény, akkor kell használnia a rossz nyelv. Itt van a KSH. Amit úgy hívnak: "Julian" hívom "az év napja". Look up "Julián" a Wikipédiában. Ez a szkript használ az én datecalc szkriptet, hogy a felhasználónak meg kell adnia a végpontok, mint ÉÉÉÉHHNN. datecalc kiküldik erre az oldalra és a keresési funkció megtalálja az Ön számára.

Egy dolog KSH ... Számos nullával Feltételezzük, hogy a oktális. Ez miért is stripping számjeggyel le számokat Ezt megelőzően számtani.


Kód:
$ ls -1 files
A2008001231000.L2
A2008021231000.L2
A2008041231000.L2
A2008061231000.L2
A2008081231000.L2
A2008101231000.L2
$
$
$
$ ./findit
enter start yyyymmdd - 20080101
enter end yyyymmdd - 20080220
A2008001231000.L2 is in range
A2008021231000.L2 is in range
A2008041231000.L2 is in range
$
$
$
$ cat findit
#! /usr/bin/ksh

read start?"enter start yyyymmdd - "
y1=${start%????}
d1=${start#??????}
temp=${start%$d1}
m1=${temp#$y1}
m1=${m1#0}
d1=${d1#0}
doy1=$(($(datecalc -a $y1 $m1 $d1 - $y1 1 1) + 1))
#echo $start $y1 $m1 $d1 $doy1

read end?"enter end yyyymmdd - "
y2=${end%????}
d2=${end#??????}
temp=${end%$d2}
m2=${temp#$y2}
m2=${m2#0}
d2=${d2#0}
doy2=$(($(datecalc -a $y2 $m2 $d2 - $y2 1 1) + 1))
#echo $start $y2 $m2 $d2 $doy2

cd files
ls | while read name ; do
        temp=${name#?}
        temp1=${temp#????}
        f_year=${temp%$temp1}
        temp2=${temp1#???}
        f_doy=${temp1%$temp2}
        f_doy=${f_doy##*(0)}
#       echo $name $f_year $f_doy
        if ((y1<=f_year && doy1<=f_doy && f_year<=y2 && f_doy<=doy2)) ; then
                echo $name is in range
        fi
done
exit 0
$

  #3 (permalink)  
Old 08-02-2008
félelmetes redoubtable is offline
Regisztrált felhasználó
  
 

Join Date: Aug 2008
Helyszín: Portugália
Posts: 242
Látom, az mktime () paradicsoma.
A férfi mktime:

Kód:
           struct tm {
               int tm_sec;         /* seconds */
               int tm_min;         /* minutes */
               int tm_hour;        /* hours */
               int tm_mday;        /* day of the month */
               int tm_mon;         /* month */
               int tm_year;        /* year */
               int tm_wday;        /* day of the week */
               int tm_yday;        /* day in the year */
               int tm_isdst;       /* daylight saving time */
           };

 tm_yday
              The number of days since January 1, in the range 0 to 365.

Nos, én nem tudtam mktime ()-hoz dolgozik közvetlenül, de még mindig használt tm_yday.

Kód:
Tsunami julian_days # perl test2.pl 
Enter start date [yyyy/mm/dd]: 20080101
Enter end date [yyyy/mm/dd]: 20080220
A2008041231000.L2
A2008021231000.L2
A2008001231000.L2
Tsunami julian_days # perl test2.pl 
Enter start date [yyyy/mm/dd]: 2008/01/01  
Enter end date [yyyy/mm/dd]: 2008/02/20
A2008041231000.L2
A2008021231000.L2
A2008001231000.L2
Tsunami julian_days #

és a kód:


Kód:
#!/usr/bin/perl -w

use POSIX;

$| = 1;

my $input;
my (@date_s, @date_e);

opendir(DIR, ".") || die "can't opendir: $!";
@dots = grep { ! /^\./ && /\.L2$/ } readdir(DIR);
closedir DIR;

print "Enter start date [yyyy/mm/dd]: ";
($input = <STDIN>) =~ /(\d{4})\/*-*(\d{2})\/*-*(\d{2})/;
$date_s[0] = mktime (0, 0, 0, $3, ($2-1), ($1-1900), 0, 0);
$date_s[2] = $1;
print "Enter end date [yyyy/mm/dd]: ";
($input = <STDIN>) =~ /(\d{4})\/*-*(\d{2})\/*-*(\d{2})/;
$date_e[0] = mktime (0, 0, 0, $3, ($2-1), ($1-1900), 0, 0);
$date_e[2] = $1;
(undef, undef, undef, undef, undef, undef, undef, $date_s[1] ,undef) = localtime($date_s[0]);
(undef, undef, undef, undef, undef, undef, undef, $date_e[1] ,undef) = localtime($date_e[0]);

foreach my $i (@dots)
{
        $i =~ /^A(\d{4})(\d{3})/;
        print $i . "\n" if (($1 >= $date_s[2] && $1 <= $date_e[2]) && (($2+0) >= $date_s[1] && ($2+0) <= $date_e[1]));  
}

Closed Thread

Könyvjelzõk

Címkék
datecalc

Téma eszközök Keresés a téma
Keresés a téma:

Részletes keresés
Megjelenítési módok Rate this thread
Rate this thread:

Posting szabályzat
Ön nem post new threads
Ön nem post válaszok
Ön nem post Csatolmányok
Ön nem szerkeszteni az üzeneteidet

BB kód van Be
Smilies vannak Be
[IMG] kód Be
HTML kód Ki
Trackbacks vannak Be
Pingbacks vannak Be
Refbacks vannak Be




Minden idő GMT -4. Az idő most 10:45 PM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Nyelvre lefordítva Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
A UNIX és Linux Fórum Tartalom Copyright © 1993-2009. Minden jog Reserved.Ad menedzsment RedTyger

Content Relevant URLs by vBSEO 3.2.0