Você pode usar uma combinação de sed
, xargs
e date
:
$ sed -r 's/.{4}([0-9]{3}).*//' input | xargs -i date -d '2014-01-01 + {} days - 1 day' '+%Y %m %d'
2014 03 08
2014 03 09
2014 03 10
Então você pode read
os valores em variáveis:
sed -r 's/.{4}([0-9]{3}).*//' input | xargs -i date -d '2014-01-01 + {} days - 1 day' '+%Y %m %d' |
while read year month day
do
echo "Year: $year"
echo "Month: $month"
echo "Day: $day"
done
Referências:
O código anterior usava um ano fixo. Para usar o ano dado pela extensão, podemos dizer a sed
para criar uma string de data completa para date
:
sed -r 's/.{4}([0-9]{3}).\.([0-9]{2}).*/20-01-01 + days - 1 day/' input | xargs -i date -d {} '+%Y %m %d'