我需要从下面的字符串格式中提取开始日期和结束日期,如下所示。
col1
2018Q1
2018_Q2
2018-Q3
所以我需要获得如下输出
col1,start_dt,end_dt
2018Q1, 2018-01-01 00:00:00, 2018-03-31 00:00:00
2018_Q2, 2018-04-01 00:00:00, 2018-06-30 00:00:00
2018-Q3, 2018-07-01 00:00:00, 2018-09-30 00:00:00
我已经使用搜索模式来拆分YYYY和每季度信息。那么如何传递这些值并获得上述的start_dt和end_dt。
答案 0 :(得分:0)
您可以使用case
进行匹配:
#!/bin/sh
set -eu
(
read -r header
printf '%s,start_dt,end_dt\n' "${header}"
while read -r date
do
case "${date}"
in
*Q1)
beg=01-01
end=03-31
;;
*Q2)
beg=04-01
end=06-30
;;
*Q3)
beg=07-01
end=09-30
;;
*Q4)
beg=10-01
end=12-31
;;
*)
printf 'Bad format %s' "${date}" >&2
exit2
esac
year="$(printf '%s' "${date}" | grep -o '^[[:digit:]]\+')"
printf '%s, %d-%s 00:00:00, %d-%s 00:00:00\n' \
"${date}" \
"${year}" \
"${beg}" \
"${year}" \
"${end}"
done
) < file