Для извлечения квартальной даты из строки YYYYQ1 используется скрипт оболочки - PullRequest
0 голосов
/ 25 января 2019

Мне нужно извлечь дату начала и дату окончания из приведенного ниже строкового формата, как показано ниже.

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.

1 Ответ

0 голосов
/ 25 января 2019

Вы можете использовать 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...