« ウラビデオ2/聖飢魔II | Main | syslogで遊ぶ »

February 23, 2007

昨日の日付

後輩のかわうそがシェルスクリプトで悩んでるので、何を悩んでいるのか聞いてみた。

-Tambourineさん、昨日の日付ってどうやったら取れます?dateコマンドの結果から1引いたりとかしてドツボなんですが・・・

「あー。昔、同じ目的で悩んだわ。そんときは自信なかったから、結局、Perlでyesterdayってコマンドを作った」

-え~

というわけで、自分のディスクの中をあさってみたけど、yesterday.plは発見できず。じゃ、Rubyで書いたげよ

#!/usr/bin/ruby
require 'date'

format = "%Y%m%d"
before = 1

unless ARGV.empty?
  before = ARGV.shift.to_i
end

unless ARGV.empty?
  format = ARGV.shift
end

today = Date.today
yesterday = today - before

print yesterday.strftime(format)

いささか手抜きだけど、まあ、こんなモンでしょ。

AIXにデフォルトで入ってるものでやるとなると、Perlで出来ることはわかってるけど、あとはどうなんでしょう。awkならどうなのかな・・・ぐぐってみた。こんなのみつけた。

awk 'BEGIN{print strftime("%Y%m%d",systime()-24*60*60)}'

ほっほう。素晴らしい。なるほど。やってみました。

awk: 0602-502 関数 strftime は定義されません。

ああん・・・、gawkじゃないとダメみたいです。

|
|

« ウラビデオ2/聖飢魔II | Main | syslogで遊ぶ »

Comments

gnu の date だと
date --date 'yesterday'
で終了です。

Posted by: nac | February 24, 2007 at 12:02 AM

おー、ホントだ。いいなあ

Posted by: Tambourine | February 24, 2007 at 09:48 AM

単純にPerl ワンライナーを使って、

$ perl -e '@T=localtime(time-86400); printf("%d/%d/%d \n",($T[5] + 1900),$T[4]+1,$T[3])'

って感じで。

あと、面白い解決策として毎日cronでdateをとっておいて次の日に使う方法とか。

Posted by: nac | February 24, 2007 at 10:18 PM

Post a comment



(Not displayed with comment.)


Comments are moderated, and will not appear on this weblog until the author has approved them.



TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/47905/13986791

Listed below are links to weblogs that reference 昨日の日付:

« ウラビデオ2/聖飢魔II | Main | syslogで遊ぶ »