スポンサーリンク
gawkでは、strftime()とmktime()で曜日の取得ができる
参考:awk入門-使い方まとめ一覧-
awkには用意されていないので、gawkをインストールする必要があります。
下記がコーディングの一例です。
gawkで1行ごとに日付の曜日を出力するコードが下記になります。
week.txtには日付が、年 月 日の順で、2017/1/1と2017/1/2が2行で記載されていています。
#!/bin/sh
cat week.txt | gawk '
{
year = $1
month = $2
day = $3
week = strftime("%w", mktime( year " " month " " day " 0 0 0" ))
print "week=" week
}
'
#下記が実行結果です
$ cat week.txt
2017 1 1
2017 1 2
$ ./week.awk
week=0
week=1
スポンサーリンク
まずはmktime()を使って、Unix時間に変更する
strftime()の入力は、Unix時間です。
gawkには、Unix時間を文字列に変換する関数が用意されています。
まずはmktime()を使って、Unix時間に変換します。
mktime( year " " month " " day " 0 0 0" )
そして、strftime()の第一引数に"%w"で書式指定してあげれば、曜日が出力
曜日の書式は"%w"です。
第二引数にmktime()を使って、Unix時間を設定してあげればOK。
week = strftime("%w", mktime( year " " month " " day " 0 0 0" ))
strftime()の戻り値は、
日曜日:0 月曜日:1 火曜日:2 水曜日:3 木曜日:4 金曜日:5 土曜日:6 となります。
曜日毎に処理したい時は大変便利です。
スポンサーリンク