2

の形式のタイムスタンプを持つ 2 つのファイルがありますMMDDYYYY-HHMMSS。たとえば。04192012-00062304192012-000854

2つの違いを秒単位で見つけることができる必要があります。

チェックする特別なケース

  • 真夜中をまたぐ日付。例: 04172012-115500& 04182012-000200.
  • どのファイルが最初に来るかなどは問題ではありません。

date -dフラグにアクセスせずに ksh を実行しています。これをシェルスクリプトにする方法について、誰かが私を正しい方向に向けることができますか? (これはより大きなシェル スクリプトの一部になるため、他の言語は使用しないでください)

これは、solaris と linux ksh の両方で実行することを目的としています。前もって感謝します。

4

4 に答える 4

0

私は ksh を知らないので、この解決策では gnu-date と bashisms を使用します。

d1=04192012-000623
dd1="${d1:4:4}/${d1:0:2}/${d1:2:2} ${d1:9:2}:${d1:11:2}:${d1:13:2}"
d1=04192012-000854
dd2="${d1:4:4}/${d1:0:2}/${d1:2:2} ${d1:9:2}:${d1:11:2}:${d1:13:2}"
echo $(($(date -d "$dd1" +%s) - $(date -d "$dd2" +%s)))

おそらく、${var:from:len} を ksh で使用して、文字列から一部を切り取ることができない場合は、それを別のもの、おそらく sed に置き換える必要があります。

于 2012-04-24T22:45:11.883 に答える
0

stat -c に続いて、次のいずれか

   %X     time of last access, seconds since Epoch

   %Y     time of last data modification, seconds since Epoch

   %Z     time of last status change, seconds since Epoch
于 2015-07-24T17:08:36.180 に答える
0

スターターとして(上記のリンクから):

#! /usr/bin/ksh

echo enter first time stamp
read TIME1
echo enter second time stamp
read TIME2
H1=${TIME1%:+([0-9])}
M1=${TIME1#+([0-9]):}
H2=${TIME2%:+([0-9])}
M2=${TIME2#+([0-9]):}
H1=${H1#0}
M1=${M1#0}
H2=${H2#0}
M2=${M2#0}
((MAM1=H1*60+M1))
((MAM2=H2*60+M2))
((MAM1>MAM2)) && ((MAM2=MAM2+1440))
((diff=MAM2-MAM1))
echo diff = $diff

exit 0
$ ./timestamp
enter first time stamp
17:30
enter second time stamp
18:05
diff = 35
$ ./timestamp
enter first time stamp
23:59
enter second time stamp
00:01
diff = 2
$
于 2012-04-20T09:13:35.787 に答える
0

これが楽しみのためだけなら、頑張ってください:)。実際の実用的な目的である場合は、How to get the difference between now and a different date (in minutes) using ksh (or another shell script)? のstrptimeラッパーを参照してください。、簡単に適応できる必要があります。

于 2012-04-24T22:00:27.723 に答える