で、結局date -fって何に使うの?

日付だけ入ってるファイルがあるとき、

takk@deb8:~$ cat a
20190102
20110102
20150102
20170219
20130505
takk@deb8:~$

date -fコマンドで日付の入ったファイルを指定すると、このように表示されます。

takk@deb8:~$ date -f a
2019年  1月  2日 水曜日 00:00:00 JST
2011年  1月  2日 日曜日 00:00:00 JST
2015年  1月  2日 金曜日 00:00:00 JST
2017年  2月 19日 日曜日 00:00:00 JST
2013年  5月  5日 日曜日 00:00:00 JST
takk@deb8:~$ 

便利です。
。。。はあ。で、結局何に使うのでしょうか?

日付書式の統一に使えます。

このような書式がばらばらの日付の一覧があるとき、

takk@deb8:~$ cat b
1/2/2019
2011/01/02
2015-1-2
Feb. 19, 2017
5 May 2013
takk@deb8:~$

date -fコマンドで一発変換して綺麗に書式が揃います。

takk@deb8:~$ date -f b
2019年  1月  2日 水曜日 00:00:00 JST
2011年  1月  2日 日曜日 00:00:00 JST
2015年  1月  2日 金曜日 00:00:00 JST
2017年  2月 19日 日曜日 00:00:00 JST
2013年  5月  5日 日曜日 00:00:00 JST
takk@deb8:~$ 

dateコマンドの他オプションと組み合わせると、

takk@deb8:~$ date +%F -f b
2019-01-02
2011-01-02
2015-01-02
2017-02-19
2013-05-05
takk@deb8:~$ 

このように他の書式にもできます。

では、複数フィールドのデータで使ってみましょう。

takk@deb8:~$ cat data
1	1/2/2019	retrials
2	2011/01/02	directer
3	2015-1-2	conservatives
4	Feb. 19, 2017	alliterations
5	5 May 2013	ranches
takk@deb8:~$ 

上のようなデータが格納されているファイルdataの、2列目の日付の書式を統一してみます。

以下のように、cutして、pasteして、列を並び替えすると、

takk@deb8:~$ cut -f2 data >a
takk@deb8:~$ date +%F -f a | paste data - data | cut -f1,4,7
1       2019-01-02      retrials
2       2011-01-02      directer
3       2015-01-02      conservatives
4       2017-02-19      alliterations
5       2013-05-05      ranches
takk@deb8:~$ 

簡単操作で、日付の書式が統一できました。

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA