Linux下批量统计相似命名文件中yyyymmdd格式日期出现次数的方法
Linux下多文件批量统计yyyymmdd格式日期出现次数的命令调整方案
你可以直接使用如下调整后的命令实现需求:
cat abc* | grep -Eo '[0-9]{8}' | sort | uniq -c | sort -nr
调整点说明
- 替换原有固定关键词的grep逻辑:新增
-E参数启用扩展正则匹配,新增-o参数指定仅输出匹配到的内容,而非整行内容 - 用正则
[0-9]{8}匹配所有符合8位数字格式的yyyymmdd日期,如果你需要过滤掉非法日期(比如月份为13、日期为32的无效值),可以将正则替换为更严谨的版本:(19|20)[0-9]{2}(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01]),仅匹配1900-2099年范围内的合法日期 - 新增
sort对匹配到的所有日期做排序,后续才能用uniq -c完成去重计数,uniq -c输出的原生格式就是「出现次数 匹配内容」,和你需要的输出格式完全一致 - 末尾的
sort -nr是将统计结果按出现次数从高到低排序,如果你需要按日期先后排序,将这部分替换为sort -k2即可
如果需要调整输出的对齐格式,可以在末尾追加awk '{printf "%-6d %s\n", $1, $2}'自定义空格/制表符分隔效果。
内容的提问来源于stack exchange,提问作者Chanchal Dutta
相关产品推荐
相关产品推荐

