|
シェルで、dateコマンドで取得した時間から5分前の の時間を取得したいのですが、できるでしょうか。 date +%H%M%S と実行します。 結果として、「130530」が取得できます。 そこから、取得した、「1305030」から5分前の「130030」を 求めたいのですが、できるのでしょうか。 環境は、 Solaris、shです。 |
|
>>4560 べた 上にある方が、現実的な解です。 - perl で localtime(time-5*60) - GNU date をインストールして date --date '5 minutes ago' - http://x68000.q-e-d.net/~68user/cgi-bin/wwwboard.cgi?log=1382 的なやり方 - http://home.catv.ne.jp/pp/ginoue/bn/descend.html の「2002/04/02 ひとこと」 的なやり方 |
|
プロパーや一次請けが perl を嫌がったり、ましてや非純正な物 (GNU プロダクト)を入れるなんて駄目なんて悲惨な職場を経験したので... Solaris 付属の date コマンドに %T って有りますか? 無かったとしても date +%H:%M:%S って書き方は利用可能ですか? 結果として、13:05:30 が取得できるなら、予め IFS_OLD=$IFS ; IFS=":" して 2 番目のフィールドが 5 未満か? とか 1 番目のフィールドが 0 以下か? って 辺りを条件に繰り下がり処理を手作りするのもありますね。 |
|
あ... 68user さんが例示してるやん。 リンクは読んでから書かないと駄目ね。 |
|
>>4561 68user >>4562 hoge ありがとうございます。 日付またがりなどを考えるとPerlでやる方法がいいです。 Perlでやります。 もう1つ質問があります。 シェルを起動し、起動した時間から5分前に出力された時間以降の syslogの内容を別ファイルに出力したいのですが、できるのでしょうか。 例えば、 今が、18:00:00とします。 シェルを起動し、18:00:00を取得します。 18:00:00を基にして、5分前の17:55:00を取得します。 「Apr 6 18:55:00」以降に出力されたsyslogをすべて 別ファイルに出力します。 ということ実現したいのです。 時間は、 $tm = time - 300; my $now = strftime "%b %e %H:%M:%S", localtime($tm); で取得します。 |