我在这样的文件中有数据...

405,,,405,15.4,0,04/21/12 14:13:29
402,,,402,15.4,0,04/21/12 14:13:37
404,,,404,15.5,0,2012/04/21 14:14:05
404,,,404,15.4,0,2012/04/21 14:14:11
403,,,403,15.4,0,2012/04/21 14:14:17

我想将最后一列转换为YYYY/MM/DD hh:mm:ss格式的日期。

有些行已经采用这种格式,因此应将其忽略。

我尝试了以下awk命令,但它似乎很慢,有时会引发错误
awk -F ',' '{ ("date -d \""$7"\" \"+%Y/%m/%d %T\"") | getline $7; print }' MyFile

这不必在awk中完成。我在标准Debian命令行上有可用的实用程序。

最佳答案

我会用sed代替awk。像这样:

sed 's@,\(..\)/\(..\)/\(..\) @,20\3/\1/\2 @'

问题编辑之前的旧答案:

您可以使用tr : /将冒号转换为斜杠,或者可以让awk直接进行替换。但是,为什么您会认为HH/MM/SS是有效格式呢?

关于linux - 用awk或其他格式转换最后一列中的日期格式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10259407/

10-16 03:48