linux - 希望使用命令计算第 1 列中某个日期范围内的第 6 列中的项目数
问题描述
所以我有一个包含 21 列的 CSV 文件。第 1 列是 author_ID,第 6 列是发布日期。我希望输出 2017 年 1 月 1 日 0:00 到 2017 年 12 月 31 日 24:00 日期范围内的 authors_ID 总数。所以基本上是 2017 年 author_ID 的总数。
解决方案
您可以使用 awk 从第 6 列检查年份是否为 2017,如果是则打印第 1 列,并使用“sort -u”查找唯一条目。
例如
awk -F, '$6 ~ /..?\/..?\/2017 ..?:../ {print $1}' input.csv | sort -u
这基本上是说从第 6 列匹配一个或两个字符的任何行打印第一列,后跟一个 / 后跟任何一个或两个字符,后跟一个 /,然后是 2017 和一个空格,后跟任何一个或两个字符,然后一个冒号后跟任意两个字符。
编辑:
如果您的日期范围变得比一整年更具体(例如,从 02/27/2016 02:35 - 10/02/2018 21:15),您可以考虑将日期字符串 ( MM/DD/YYYY HH:MM
) 转换为纪元时间戳 (自“时代”以来的秒数)并对此进行比较。 awk
的时间函数可以用于此操作。
推荐阅读
- python - 如何修复 sqlalchemy.exc.InvalidRequestError:一个或多个映射器无法初始化...原始异常是:viewonly
- python - 从 Reading 类型的对象中提取特定值(Reading 是加载 NEM13 文件时返回的对象)
- c# - CS1061:MyClass 不包含 X 的定义,并且找不到接受 MyClass 类型的第一个参数的扩展方法 X
- c# - SearchResultCollection 类:对象属性值比较
- azure-devops - Azure DevOps 和发布流程,热修复时处理版本控制?
- visual-studio - 在新的 git 体验 VS 16.8 中找不到旧的“同步”
- typescript - 如何推断外部函数的参数类型
- list - Agda 列出自然数的通用列表的最后一个,并与 1 的列表连接
- c++ - 2D FFT 将两个矩阵都转换为 FFT 格式后该怎么办?
- web-scraping - 如何将数据从多页存储到json?