【发布时间】:2019-03-08 21:59:30
【问题描述】:
我有一个看起来像这样的文件
server1-adm.test.com,/var,dir,29987,2007-12-03 15:52:43,root,root
server2.fs.com,/DATA_File.out,file,299076487,2008-10-15 05:12:23,user1,group1
server3-prd.mod.com,/opt,dir,29987,2009-05-03 00:13:23,user1,group1
server4,/var/tmp/xxz.zip,file,400,2007-12-03 15:52:43,root,root
server1-adm.test.com,/usr,dir,34299876,2006-12-03 16:52:43,root,root
server3-prd.mod.com,/local/home,dir,400,2009-05-03 12:13:23,user2,group1
第 5 列是我要修改的 date + time 值。我尝试将多个 awk 语句一起使用,但看起来太混乱了,容易出错。
与其使用多个语句进行日期格式转换,不如在 awk 中使用date 系统命令转换为以下结果。
server1-adm.test.com,/var,dir,29987,2007-12-03 03:52:43 PM,root,root
server2.fs.com,/DATA_File.out,file,299076487,2008-10-15 05:12:23 AM,user1,group1
server3-prd.mod.com,/opt,dir,29987,2009-05-03 00:13:23 AM,user1,group1
server4,/var/tmp/xxz.zip,file,400,2007-12-03 03:52:43 PM,root,root
server1-adm.test.com,/usr,dir,34299876,2006-12-03 04:52:43 PM,root,root
server3-prd.mod.com,/local/home,dir,400,2009-05-03 12:13:23 PM,user2,group1
date -d "2007-12-03 15:52:43" +%Y/%m/%d:%H%M%S 行中的某些内容。我不知道我们如何在date 命令中获取 AM/PM。
我已经有多个 awk 语句作为脚本的一部分一起运行,以对同一个传入文件执行其他文本修改,因此我想使用 awk + date 语句来执行此操作。
【问题讨论】:
-
@Ed Morton,GNU awk 和 gawk 一样吗?是的,系统已经傻眼了。