替换 csv 文件中的 unix 时间戳.换行符问题



我有一个命令可以输出到标准输出行,如下所示:

1508425884.382198,30
1508425885.383406,30

我想将 unixtimestamp 1508485425.712408替换为另一种日期格式。

我尝试了以下情况:

awk -F ',' -v OFS=',' '$1 { system( "date -d @" $1 ); print $2}'
awk -F ',' -v OFS=',' '$1 { print strftime("%F %H:%M", $1); print $2}'
awk -F ',' -v OFS=',' '$1 { print strftime("%c", $1); print $2}'

但不幸的是,每个人都在日期之后输出行尾的字符。在第一种情况下,我还尝试使用管道添加tr -d 'n',如下所示:

awk -F ',' -v OFS=',' '$1 { system( "date -d @" $1 "| tr -d 'n'" $1 ); print $2}'

但这似乎不是有效的解决方案。

这就是我得到的:

Thu Oct 19 18:11:24 +03 2017
30
Thu Oct 19 18:11:25 +03 2017
30

这就是我正在寻找的:

Thu Oct 19 18:11:24 +03 2017, 30
Thu Oct 19 18:11:25 +03 2017, 30

print语句将其所有参数输出到单独的行上。
只需使用单个print语句:

awk -F',' '{ print strftime("%c", $1),$2 }' OFS=','

最新更新