The UNIX and Linux Forums  

Go Back   UNIXおよびLinuxフォーラム > トップフォーラム > UNIXの詳細&エキスパートのためのユーザー
Googleのunix.com



UNIXの詳細&エキスパートのためのユーザー 専門家への専門家。先進のUNIXは、 UNIXのコマンドは、 Linux 、オペレーティングシステム、システム管理、プログラミング、シェル、シェルスクリプトは、 Solarisのは、 Linux 、 HP - UXのは、 AIXので、 OS X 、 BSDのこちらをご覧ください。

その他のUNIXおよびLinuxフォーラムトピックは参考にすること
スレッド スレッドスターター フォーラム 返信 最後の投稿
素朴な疑問皆さん(ハード私にとって) BkontheShell718 シェルプログラミングとスクリプティング 3 2008年1月7日 11:48午前
[質問]のハードな運動は、助けを必要と EnioMarques UNIXのダミー質問と回答のため 2 2007年9月20日 11:22午後
ハードドライブの質問 Netghost AIX 0 2006年8月24日 02:01午後
ヘルプしてください....必死の必要がある!難しい質問! Sparticus007 UNIXの詳細&エキスパートのためのユーザー 1 2002年1月11日 06:43午後
専門家のみ!難しい質問に先立ち! Foo49272 UNIXの詳細&エキスパートのためのユーザー 1 2002年1月7日 10:22午後

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek を搭載 Powered by Google
 
LinkBack スレッドツール このスレッドを検索 スレッドを評価 表示モード
  #1固定リンク)  
Old 2008年8月2日
msb65 msb65 is offline
登録ユーザー
  
 

参加日: 2008年8月
投稿: 89
難しい質問

私は、ディレクトリには、フォーマットのファイルが含まれているシリーズ:
A2008001231000.L2

私だけを6-8桁の詳細については、効果的にケアしているので、ファイル:
?????---*.のL2

私のファイルがあるのL2 ????? ????? 366 *. 001 *.のL2の範囲

このような3桁のファイルのユリウス暦の日を表すことに注意する必要があります。 2つの変数:定義できるように私の目標ですstart_dayとend_day 。どうすればよいとの間のすべてのファイルを一覧することができますstart_dayとend_day 。ジュリアン日以来の3桁以上である必要があります注:は、問題を複雑にします。
  #2固定リンク)  
Old 2008年8月2日
Perderabo's Avatar
Perderabo Perderabo is offline Forum Staff  
Unixのデーモン
  
 

参加日: 2001年8月
場所: Ashburn 、バージニア州
投稿数:9131
これは難しいと思う場合は、異なる言語を使用する必要があります。ここにkshにある。 "ジュリアン"コールが"今年の日"と呼ばれるもの。 "ウィキペディアのユリウス暦の日"をご覧ください。このスクリプトは、ユーザーの<time>はYYYYMMDDとして、エンドポイントを入力できるように私のdatecalcスクリプトを使用しています。 datecalcこのサイトに掲載され、 Googleの検索機能を自動的に見つけることができます。

kshについて1つの事...最初にゼロとのコードの8進数であると想定されています。それゆえに、演算を行う前に、数字をゼロストリッピングを維持しています。


コード:
$ 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固定リンク)  
Old 2008年8月2日
恐るべき redoubtable is offline
登録ユーザー
  
 

参加日: 2008年8月
場所:ポルトガル
投稿数: 242
私はあなたmktime ( )の楽園ですね。
mktime男投稿者:

コード:
           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.

まあ、私を取得できませんでしたmktime ( )の仕事に直接、それでもtm_yday使用されます。

コード:
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 #

して、コード:


コード:
#!/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

ブックマーク

タグ
datecalc

スレッドツール このスレッドを検索
このスレッドを検索

高度な検索
表示モード このスレッド
このスレッド

投稿ルール
あなた ことができない。 新しいスレッドを投稿
あなた ことができない。 返信の投稿
あなた ことができない。 添付ファイルの投稿
あなた ことができない。 自分の投稿を編集

BBコード なる 〜の上に
スマイリー なる 〜の上に
[イメージ] コードは 〜の上に
HTMLコードは、 オフ
トラックバック なる 〜の上に
ピングバック なる 〜の上に
Refbacks なる 〜の上に




すべてGMT -4です。現在の時刻は 07:59午後


提供: vBulletin、著作権© 2000 - 2006、Jelsoft企業株式会社。言語翻訳による電源
vBCredits v1.4著作権© 2007 - 2008 、 PixelFXスタジオ
は、 UNIXおよびLinuxフォーラムのコンテンツ著作権© 1993 〜 2009 。すべての権利を管理しReserved.Ad RedTyger

コンテンツ関連のURLで vBSEO 3.2.0