如何在awk脚本中将一列转换为日期格式?

时间:2013-04-09 15:48:08

标签: bash date awk

cat test.txt | 
 awk 'BEGIN { FS = "\t" } ;{ print  $44=strftime("%d %b %Y",$44)  "\t" $44 }'

我收到了:

 31 12 1969      2012-09-27

但我曾预料到:

 27 Sep 2012      2012-09-27

错误在哪里? 感谢。

1 个答案:

答案 0 :(得分:5)

如果你真的想用awk内置函数转换格式,这个例子可以帮助你:

kent$  echo "2012-09-27" |awk '{t=$0;gsub("-"," ",t);print strftime("%d %b %Y", mktime(t" 00 00 00"))}' 
27 Sep 2012

阅读手册页中的以下功能说明:

 mktime(datespec)
 strftime([format [, timestamp[, utc-flag]]])

编辑尝试修复旧命令,但没有输入文件,无法测试...

 awk 'BEGIN {FS=OFS="\t"}{t=$44;gsub("-"," ",t); print strftime("%d %b %Y", mktime(t" 00 00 00")),$44}' test.txt