次のファイルがあります。
1,2,3,4,5,2015-10-13,7,8,2037-01-15
1,2,3,4,5,2015-09-05,7,8,2040-01-15
1,2,3,4,5,2015-09-15,7,8,2016-06-15
1,2,3,4,5,2015-10-13,7,8,2015-07-08
1,2,3,4,5,2015-11-02,7,8,2015-08-02
を使用して、awk
2つの日付($ 6と$ 9)の間の日数をどのように確認できますか?
最後のレコードの場合、結果は次のようになります。90
可能ですか?ありがとうございます...
答え1
質問によると、すべての月を30日に数えると仮定します。この場合、外部ツール(たとえば)を使用する必要はなく、date
直接日付を計算するだけです。
awk -F'[,-]' '{print 360*($6-$11)+30*($7-$12)+($8-$13)}' file
-7652
-8770
-270
95
90
答え2
ここではgnu awkが大丈夫だとします。
以下は、日数の違いを提供する方法です。しかし、これは望ましい結果ではありません(2015-11-02から2015-08-02までの期間は92日、希望する結果は90日です)。
$ awk -F, '{ gsub(/-/," ",$0); print (mktime($6 " 00 00 00")-mktime($9 " 00 00 00"))/86400 }' file.txt
-7765.04
-8898.04
-274
97
92.0417
$