我有一个输出到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
答案 0 :(得分:4)
print
语句在单独的行中输出所有参数。
只需使用单print
语句:
awk -F',' '{ print strftime("%c", $1),$2 }' OFS=','