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

时间:2017-10-25 08:02:28

标签: awk

我有一个输出到stdout行的命令,如:

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

1 个答案:

答案 0 :(得分:4)

print语句在单独的行中输出所有参数。
只需使用单print语句:

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