首页 > 解决方案 > 如何获取数据,然后通过 wk 将其转换为日期特定的行?

问题描述

我需要将前六个值转换为日期EPOCH OF CURRENT MAP

我还没有理解awk的逻辑。

文件如下...

  2018     1     2     0     0     0                        EPOCH OF CURRENT MAP 
  Data
  2018     1     2     1     0     0                        EPOCH OF CURRENT MAP 
  Data
  2018     1     2     2     0     0                        EPOCH OF CURRENT MAP
  Data
  2018     1     2     3     0     0                        EPOCH OF CURRENT MAP
  Data
  2018     1     2     4     0     0                        EPOCH OF CURRENT MAP
  Data  
  2018     1     2     5     0     0                        EPOCH OF CURRENT MAP
  Data 
  2018     1     2     6     0     0                        EPOCH OF CURRENT MAP
  ...

我试过

awk '/EPOCH OF CURRENT MAP/ {printf "%s %s %s %s %s %s\n", $1,$2,$3,$4,$5,$6}' codg0010.18i

输出日期格式应为日、缩月日、年时:分:秒但不包括“EPOCH OF CURRENT”

02-Jan-2018 00:00:00
02-Jan-2018 01:00:00
02-Jan-2018 02:00:00
...

标签: awk

解决方案


使用 GNUawk

$ awk '/EPOCH OF CURRENT MAP/{print strftime("%d-%b-%Y %H:%M:%S",mktime($1" "$2" "$3" "$4" "$5" "$6))}' file

02-Jan-2018 00:00:00
02-Jan-2018 01:00:00
02-Jan-2018 02:00:00
02-Jan-2018 03:00:00
02-Jan-2018 04:00:00
02-Jan-2018 05:00:00
02-Jan-2018 06:00:00

推荐阅读