AWK 或连接(偶尔更正)csv 中两个字段的替代方法

问题描述 投票:0回答:1

不久前,我开始编写一些东西来解析一些应用程序日志,并认为一切都很好,但今天我注意到一些数据丢失,这是因为时间戳问题。日志结构是这样的:

f_timestamp,f_timestamp2,f_date
1729448207,303701614,2024/10/20 19:16:47 303701614
1729415974,96090458,2024/10/20 19:16:47 096090458

我需要纳秒精度,我所做的就是粗暴地将

f_stampstamp
f_timestamp2
粘在一起

awk -F ',' '{print $0 FS $1$2}' filein.csv > fileout.csv

f_timestampf_timestamp2

1729448207303701614
172941597496090458

问题是 f_timestamp2 有时是 8 位数字 - 前导 0 意味着我的日期已经过了几个月

我知道有两种方法可以解决这个问题

  1. 找到一种在必要时添加前导 0 的方法,即 f_timestamp2 < 9 digits
  2. 将 f_date 转换为 YYYY-MM-DD hh:mm:ss.sssssssss 格式,因为这是我的数据库期望的时间戳,而忘记了 UNIX 时间戳。 f_date 的格式在以后的版本中有所不同,但我可以解决这个问题。
csv awk perforce telegraf amazon-timestream
1个回答
0
投票

f_date
列上使用 split

awk -F',' 'NR==1{print "f_timestampf_timestamp2"}
           NR>1{split($3,arr," "); print $1""arr[3]}' file
f_timestampf_timestamp2
1729448207303701614
1729415974096090458
© www.soinside.com 2019 - 2024. All rights reserved.