Добавьте минуты для датирования столбца времени

Благодаря различным участникам, разрешающим мой предыдущий запрос.

Я должен добавить минуты к столбцу даты для получения нового значения штампа даты и времени. У меня есть файл: afile.txt

1,2012-02-16,abc,aa,455,340
3,2015-02-16,dsa,dl,350,200
2,2015-02-16,aws,sw,555,180
4,2015-02-16,yyz,aa,1220,210

Я использовал awk (как предусмотрено мне участниками ранее)-

awk -F, '/,/ {
    printf "%s, %s, %s, %s, %s %02d:%02d, %s\n",
           $1, $2, $3, $4,
           $2, int($5 / 100), $5 % 100,
           $6
}' afile.txt > bfile.txt

bfile.txt
1, 2012-02-16, abc, aa, 2012-02-16 04:55, 340
3, 2015-02-16, dsa, dl, 2015-02-16 03:50, 200
2, 2015-02-16, aws, sw, 2015-02-16 05:55, 180
4, 2015-02-16, yyz, aa, 2015-02-16 12:20, 210

Я хочу добавить столбец 5 и 6 и получить новую метку времени.

Ваша справка очень ценится.

2
задан 27 May 2018 в 03:01

1 ответ

Я предполагаю, что последнее поле должно быть интерпретировано тем же способом, как предпоследний т.е. 340 означает смещение 3 часов и 40 минут.

, Если это корректно, то с помощью awk's GNU Функции Времени Вы могли сделать

awk '
  BEGIN{FS=","; OFS=", "}
  {
    split($2,d,"-"); 
    t0 = mktime(d[1]" "d[2]" "d[3]" "int($5 / 100)" "$5 % 100" 0"); 
    $5 = strftime("%Y-%m-%d %H:%M", t0); 
    $6 = strftime("%Y-%m-%d %H:%M", t0 + 3600 * int($6 / 100) + 60 * ($6 % 100))
  } 1' afile.txt
1, 2012-02-16, abc, aa, 2012-02-16 04:55, 2012-02-16 08:35
3, 2015-02-16, dsa, dl, 2015-02-16 03:50, 2015-02-16 05:50
2, 2015-02-16, aws, sw, 2015-02-16 05:55, 2015-02-16 08:15
4, 2015-02-16, yyz, aa, 2015-02-16 12:20, 2015-02-16 14:30

, Если последнее поле является просто минутами, то математика для $6 легче:

awk '            
  BEGIN{FS=","; OFS=", "}
  {
    split($2,d,"-"); 
    t0 = mktime(sprintf("%d %d %d %d %d 0", d[1], d[2], d[3], int($5 / 100), $5 % 100)); 
    $5 = strftime("%Y-%m-%d %H:%M", t0); 
    $6 = strftime("%Y-%m-%d %H:%M", t0 + 60 * $6)  } 1' afile.txt
1, 2012-02-16, abc, aa, 2012-02-16 04:55, 2012-02-16 10:35
3, 2015-02-16, dsa, dl, 2015-02-16 03:50, 2015-02-16 07:10
2, 2015-02-16, aws, sw, 2015-02-16 05:55, 2015-02-16 08:55
4, 2015-02-16, yyz, aa, 2015-02-16 12:20, 2015-02-16 15:50
5
ответ дан 2 December 2019 в 01:54

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

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