dayslash <概要> dayslash : 日付時刻フォーマット変換フィルタ <書式> Usage : dayslash [--input <format>] [--output <format>] <f1> <f2>... <file> Option : --through <string> -d <string> Version : Thu Jan 15 22:27:46 JST 2015 <出力フォーマット指定(正変換)> --output <format> で指定した形式に指定フィールド<f>の値を変換します。 <format> には、(カッコ内は例) yyyy : 年 (2013) mm : 月 (09) <-- 2桁前0埋め m : 月 (9) mmm : 月 (Sep) <-- 英表記 dd : 日 (04) <-- 2桁前0埋め d : 日 (4) HH : 時 (08) <-- 2桁前0埋め H : 時 (8) MM : 分 (09) <-- 2桁前0埋め M : 分 (9) SS : 秒 (05) <-- 2桁前0埋め S : 秒 (5) sss : ミリ秒(012) <-- 3桁前0埋め s : ミリ秒(12) を指定できます。 例) 'HH:MM_dd/mm/yyyy' -> 15:14_03/12/2014 例) 'd日(m月)yyyy年' -> 4日(9月)1966年 例) 'mmmdd/yyyy' -> Sep04/2013 指定フィールドの形式は --input <format> で指定します。--input を指定 しない場合は --output <format> で指定した形式の 年月日時分秒ミリ秒 の順の固定桁の数字であると想定します。 例) 'HH:MM_dd/mm/yyyy' の元データは 201412031514 例) 'd日(m月)yyyy年' の元データは 19660904 上記に当てはまらない場合、指定フィールドデータは桁数だけみて 6桁は HHMMSS 8桁は yyyymmdd 14桁は yyyymmddHHMMSS 17桁は yyyymmddHHMMSSsss と自動的に解釈します。 -d を指定したときはダイレクトモードとなり、直接引数 <string> を正変 換します。 <例> $ echo 20120304 | dayslash --output yyyy/mm/dd 1 2012/03/04 $ echo 20120304 20130118 | dayslash --output yyyy/mm/dd 1 2 2012/03/04 2013/01/18 $ dayslash -d --output yyyy/mm/dd 20120304 2012/03/04 $ echo 050607 | dayslash --output H時M分S秒 1 5時6分7秒 $ echo 20111201235958 | dayslash --output m/d 1 12/1 $ echo - | dayslash --through - --output yyyy/mm/dd 1 - $ echo 20111201235958002 | dayslash --output yyyy/mm/dd_HH:MM:SS.sss 1 2011/12/01_23:59:58.002 $ echo 20111201235958002 | dayslash --output yyyy/mm/dd_HH:MM:SS.s 1 2011/12/01_23:59:58.2 <備考> 年月日時分秒ミリ秒の正当性は判断しません。(桁数のみしか見ていません) <入力フォーマット指定(逆変換)> 指定フィールド<f>が --input <format>に従って年月日時分秒ミリ秒を取り 出し、年(4)月(2)日(2)時(2)分(2)秒(2)ミリ秒(3)の順で固定桁の一つの値 に変換します。--output 指定があるときは指定に従います。 <format> に文字 "." を指定したときは1文字の任意の文字を表します。 <例> $ echo 2012/03/04 | dayslash --input yyyy/mm/dd 1 20120304 $ echo 5時6分7秒 | dayslash --input H時M分S秒 1 050607 $ echo 2011年12月1日_23:59:10 | dayslash --input yyyy年m月d日_HH:MM:SS 1 20111201235910 $ echo 2011/12/1_23:59:10.0 | dayslash --input yyyy/m/d_HH:MM:SS.s 1 20111201235910000 $ echo '13/4(Thu)/2012' | dayslash --input 'd/m(...)/yyyy' 1 20120413 $ echo Apr13/2013 | dayslash --input 'mmmdd/yyyy' 1 20130413 <備考> 年月日時分秒ミリ秒の正当性は判断しません。(指定桁数のみ取り出します) またフォーマットと異なる入力文字列はエラーとなります。 <--through オプション指定時> --through オプションで指定した<string>の文字列についてはエラーとせず そのまま出力します。 <例> $ echo - | dayslash --through - --input yyyy/mm/dd_HH:MM:SS 1 - <備考> 旧形式もサポートします。 dayslash yyyy/mm/dd 1 (正変換:--output yyyy/mm/dd と同じ) dayslash -r yyyy/mm/dd 1 (逆変換:--input yyyy/mm/dd と同じ) # 20160701 括弧書きのものを見やすく整形、旧形式を備考へ等 青木