linux - 使用 awk 或其他转换最后一列中的日期格式

标签 linux bash sed awk

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

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/

相关文章:

linux - 如何使所有传出的 RST 下降

linux - 循环遍历 bash 中的日期以下载 "2016/201601031400"格式的文件

linux - 如何在超时 bash -c 命令中使用退出状态

regex - Linux : Replace key-value pair, 值包含文件路径

regex - 下一个单词的 GREP 跟随包含变量的字符串

linux - assembly 说明的含义

linux - 没有 cd 命令的手册页

c++ - 无法在 Linux 上进行回车

python - 如何从 Unicode 文件中删除字母数字单词

Linux - 如何只对包含特定文件的目录进行压缩?