如何使用awk命令将文件列的长格式时间转换为标准日期格式
解决方法:用Awk结合ssboetod转换时间戳
没问题,咱们可以通过Awk调用你现有的ssboetod命令,轻松实现把文件里的长格式时间戳转换成标准日期格式。
具体命令
直接用这个Awk命令就能完成需求:
awk -F, '{ # 构造调用ssboetod的命令 cmd = "ssboetod " $2 # 执行命令并读取输出到date变量 cmd | getline date # 关闭管道,避免处理大量记录时出现资源泄漏 close(cmd) # 输出原始第一个字段 + 转换后的日期 print $1 "," date }' <file>
命令拆解说明
-F,:指定逗号作为字段分隔符,这样$1就是记录里的名称(比如APPLE),$2是需要转换的时间戳cmd = "ssboetod " $2:拼接出调用ssboetod的完整命令,把时间戳作为参数传进去cmd | getline date:执行这条命令,并将命令的输出结果读取到date变量中close(cmd):必须关闭管道,否则处理大量记录时会因为打开的管道过多导致报错print $1 "," date:输出拼接后的结果,保持原始的逗号分隔格式
示例效果
如果你的文件里有记录:APPLE,1527777000,执行上述命令后会输出:
APPLE,Thu May 31 20:00:00 2018
额外注意事项
如果ssboetod命令不在系统全局可访问的路径里(比如需要手动指定路径才能运行),记得在Awk命令里写绝对路径,比如:
awk -F, '{cmd="/usr/local/bin/ssboetod " $2; cmd | getline date; close(cmd); print $1 "," date}' <file>
内容的提问来源于stack exchange,提问作者Programmer
相关产品推荐
相关产品推荐

