Как я использую сценарий оболочки для хранения только последнего заполненного значения в течение каждого месяца в CSV?

У меня есть файл CSV, который ежедневно обновляется кроном и выглядит примерно так:

Дата, Значение
01/11/2019,123
02/11/2019,456
03/11/2019,789
...
31/01/2020,123
01/02/2020,456
02/02/2020,789
03/02/2020,123
04/02/2020,456
05/02/2020,789

Я хотел бы, чтобы файл был обновлен сценарием оболочки так, чтобы он всегда имел последнюю запись в течение каждого месяца, например.

Дата, Значение
30/11/19,123
31/12/19,456
31/01/20,789
05/02/20,789

Обратите внимание, что последняя заполненная строка в течение каждого месяца не может быть в прошлый день того месяца

Не уверенный, как приблизиться, это так действительно ценило бы некоторую справку!

0
задан 5 February 2020 в 17:03

1 ответ

Так как Ваши даты уже заказаны, необходимо смочь распечатать предыдущую запись каждый раз изменения месяца (и еще раз в самом конце).

Напр. данный

$ cat file.csv
Date,Value
01/11/2019,123
02/11/2019,456
03/11/2019,789
31/01/2020,123
01/02/2020,456
02/02/2020,789
03/02/2020,123
04/02/2020,456
05/02/2020,789 

затем

$ awk -F, '{split($1,a,"/")} a[2] != lastm {print last; lastm = a[2]} {last = $0} END {print last}' file.csv
Date,Value
03/11/2019,789
31/01/2020,123
05/02/2020,789 

Вы получаете строку заголовка бесплатно, так как первое значение месяца всегда отличается от пустой строки.

0
ответ дан 20 February 2020 в 23:00

Другие вопросы по тегам:

Похожие вопросы: