更改文件中的日期格式

时间:2015-10-26 18:50:25

标签: linux shell unix unix-timestamp

我正在使用redHat linux。

我的文件看起来像是:

$ vi filename

Jan,1:00:00:01,有人检查了您的文件

一月,3,09:38:02,阿普尔比

Jan,16,10:20:03,****************

Jan,18,03:04:03,***************

我希望输出看起来像:

2015/01 / 01,00:00:01,有人检查了你的文件

2015/01 / 03,3,09:38:02,阿普尔比

2015/01 / 16,16,10:20:03,****************

2015/01 / 18,03:04:03,***************

请帮我这样做。感谢

1 个答案:

答案 0 :(得分:2)

如果您有GNU日期,请尝试:

$ awk -F, '{cmd="date -d \""$1" "$2"\" +%Y/%m/%d"; cmd|getline d; print d","$3","$4; close(cmd)}' file
2015/01/01,00:00:01,someone checked your file
2015/01/03,09:38:02,applebee
2015/01/16,10:20:03, ****************
2015/01/18,03:04:03, ***************

此方法不能与date的BSD(OSX)版本一起使用,因为它不支持任何可比较的-d选项。

如何运作

awk隐式循环输入行,将每一行分成字段。

  • -F,

    这告诉awk使用逗号作为字段分隔符

  • cmd="date -d \""$1" "$2"\" +%Y/%m/%d"

    这将创建一个字符串变量cmd,并包含date命令。我假设你有GNU date

  • cmd|getline d

    这将运行命令并以变量d

  • 捕获输出
  • print d","$3","$4

    这将打印您要求的输出。

  • close(cmd)

    这将关闭命令。