如何通过CLI筛选CSV文件中指定日期及之前的记录?
解决CSV日期筛选问题
你的日期列格式是YYYYMMDDHHMMSS.fffZ,前8位的纯数字日期可以直接做数值比较,用awk就能轻松筛选出20240418及之前的记录,结合你需要的邮箱过滤和排序,具体命令如下:
基础命令(无表头)
awk -F, '$1 ~ /@example.com/ && substr($3, 1, 8) <= 20240418' timestamp.csv | sort -t, -k3
带表头的情况(跳过第一行表头)
如果CSV文件包含表头行,加上NR>1跳过表头:
awk -F, 'NR>1 && $1 ~ /@example.com/ && substr($3, 1, 8) <= 20240418' timestamp.csv | sort -t, -k3
命令细节说明
-F,:指定CSV文件的分隔符为逗号$1 ~ /@example.com/:过滤出第一列(邮箱字段)包含@example.com的行substr($3, 1, 8):提取第三列(日期字段)的前8个字符,也就是核心的YYYYMMDD日期部分<= 20240418:利用纯数字日期的特性直接做数值比较,保留日期早于或等于20240418的记录sort -t, -k3:最后按第三列的日期完成排序,和你原有的排序逻辑保持一致
这个方法无需依赖复杂的日期转换工具,直接利用数字日期的天然顺序实现筛选,高效又简洁。
内容的提问来源于stack exchange,提问作者dj423
相关产品推荐
相关产品推荐

