#!/bin/ksh # # *-ja-cal_tcsv.sh - writes Japanese holidays, sundays and saturdays # # Copyright (C) 2020 Taiji Yamada # # usage: # $ ./$0 # $ ./$0 2020 # DEBUG=false #DEBUG=: type="$(basename "$0" -ja-cal_tcsv.sh)" ja_holidays_csv_sh="${type}-ja-holidays_csv.sh" year="${1-$(($(date +'%Y')+1))}" holidays="$(./"${ja_holidays_csv_sh}" | sed -n "/^$year\//p" | sort)" sundays="$(for ((i=1; i<=12; ++i)); do month="$(printf '%02d' $i)"; LC_ALL=C cal "$i" "$year" | sed -n "1,2d;/^[ 0-9][0-9]/{s/[^0-9]*\([0-9][0-9]*\).*/$year\/$month\/\1,Sunday/;p;}"; done | sed 's/\/\([0-9]\)\([^0-9]\)/\/0\1\2/g')" saturdays="$(for ((i=1; i<=12; ++i)); do month="$(printf '%02d' $i)"; LC_ALL=C cal "$i" "$year" | sed -n "1,2d;/^.. .. .. .. .. .. [ 0-9][0-9].*/{s/^.. .. .. .. .. .. *\([0-9][0-9]*\)[^0-9]*$/$year\/$month\/\1,Saturday/;p;}"; done | sed 's/\/\([0-9]\)\([^0-9]\)/\/0\1\2/g')" sundays_holidays="$(join -t, -a 1 -a 2 <(echo "${sundays}") <(echo "${holidays}") | sed "s/Sunday,//")" ! $DEBUG || saturdays_holidays="$(join -t, <(echo "${saturdays}") <(echo "${holidays}"))" #saturdays_nonholidays="$(join -t, -a 1 <(echo "${saturdays}") <(echo "${holidays}") | grep -v "Saturday,")" saturdays_nonholidays="$(join -t, -v 1 <(echo "${saturdays}") <(echo "${holidays}"))" if $DEBUG; then echo "holidays:" echo "${holidays}" echo "sundays:" echo "${sundays}" echo "saturdays:" echo "${saturdays}" echo "sundays or holidays" echo "${sundays_holidays}" echo "saturdays and holidays" echo "${saturdays_holidays}" echo "saturdays and nonholidays" echo "${saturdays_nonholidays}" fi echo_sundays_holidays_tsv() { for ((i=1; i<=12; ++i)); do month="$(printf '%02d' $i)" sundays_holidays_a_month='' echo "${sundays_holidays}" | sed -n "/^${year}\/${month}\//p" | while read sundays_holidays_line; do sundays_holidays_a_month="${sundays_holidays_a_month}`echo "${sundays_holidays_line}" | sed "s/^${year}\/[0-9][0-9]\/\([0-9][0-9]\).*$/\1/"`," done echo "${month}, ${sundays_holidays_a_month}" done } echo_saturdays_nonholidays_tsv() { for ((i=1; i<=12; ++i)); do month="$(printf '%02d' $i)" saturdays_nonholidays_a_month='' echo "${saturdays_nonholidays}" | sed -n "/^${year}\/${month}\//p" | while read saturdays_nonholidays_line; do saturdays_nonholidays_a_month="${saturdays_nonholidays_a_month}`echo "${saturdays_nonholidays_line}" | sed "s/^${year}\/[0-9][0-9]\/\([0-9][0-9]\).*$/\1/"`," done echo "${month}, ${saturdays_nonholidays_a_month}" done } join -t ' ' <(echo_sundays_holidays_tsv) <(echo_saturdays_nonholidays_tsv) | sed "s/0\([0-9][^0-9]\)/\1/g;s/,$//;s/^/${year}, /"