スポンサーリンク

gawkでは、strftime()とmktime()で曜日の取得ができる

※awkの使い方をまとめて一覧にしました。
参考: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 となります。

曜日毎に処理したい時は大変便利です。

スポンサーリンク