awk - 如何在awk中处理时间函数
问题描述
有档案test.txt
ABCDEF 2019-09-16 02:45:49
ABCDEF 2019-09-16 02:26:27
ABCDEF 2019-09-16 02:15:23
需要与 Unix 时间一样的答案:
ABCDEF 1568583949
ABCDEF 1568582787
ABCDEF 1568582123
我正在使用这个 AWK 代码。
cat test.txt|sed 's/[-:]/ /g'|awk '{print $1, mktime("$2,$3,$4,$5,$6,$7")}'
但我得到了错误的答案。我该如何解决?
ABCDEF -1
ABCDEF -1
ABCDEF -1
解决方案
gsub()
在包含第二列和第三列的组合记录上做一个单一的记录会很容易,如下所示。由于 的第一个参数gsub()
采用正则表达式参数,因此您可以同时提供定界字符并坚持将它们替换为单个空格(默认值为FS
)。
awk '{ var = ($2 FS $3); gsub(/[-:]/, FS, var); print $1, mktime(var) }' test.txt
推荐阅读
- sql - PostgreSQL:如何构建一个每日总数不断增加的表?
- elixir - 每次测试后停止 GenServer
- python - Python3:我们如何关闭netlink socket阻塞recv?
- java - 如何将对象保留在链表节点中?
- javascript - 如何在 Vue 中使用 Google Autocomplete 'addListener' 来更新子组件?
- python - 这段代码有什么问题,因为它没有给出输出图片?
- arrays - laravel 为什么我不能使用 releationshiop 来获取数据
- angular - Angular Universal Docker 构建的问题
- node.js - 如何从节点 js 获取 Knex 中的 RAISE INFO/NOTICE?
- python - 列表理解:为一个列表中的项目分配值(如果它们包含在另一个列表中)时出现语法错误