我有一个满是CSV的目录,其中有日期,但我想计算所有文件中与记录相关联的所有唯一时间戳,但问题是这些记录可以在文件中重复,因此出现了问题.例如,我有一个FILE_1,它有两列,一个是id,一个是时间戳,我想计算每个月的所有唯一记录.

我已经使用这个命令grep -E "2022-11-*" 2022-10* | wc -l搜索了所有10月份的文件,以查看11月份的日期,但我得到的比我预期的要多,因为这些记录可以复制.有没有办法做到这一点.以下是一些可能会有帮助的样本数据.

id timestamp
1 2022-10-04 16:02:02.000
2 2022-10-04 13:02:02.000

然后在下一个文件中

id timestamp
1 2022-10-04 16:02:02.000
3 2022-10-04 1:02:02.000

因此,基于这两个文件,我将返回唯一的一组3,而不是4.

为了补充这个问题,我在我的计算机上创建了两个测试文件来测试一些答案.我得到了这个

grep -E "2022-11-*" 2022-* | sort |
uniq -c
   1 2022-11-01.csv:1, 2022-11-17 21:09:56.000
   1 2022-11-01.csv:2, 2022-11-17 03:09:56.000
   1 2022-11-01.csv:3, 2022-11-09 01:10:54.000
   1 2022-11-02.csv:1, 2022-11-17 21:09:56.000
   1 2022-11-02.csv:2, 2022-11-17 03:09:56.000
   1 2022-11-02.csv:3, 2022-11-09 01:10:54.000

正如您所看到的,有两个文件,但每个文件中有3条记录是重复的,所以我应该只得到3条作为响应.所以我不确定我错过了什么.

推荐答案

只要在烟斗里加sort -u就行了.

grep -hE "2022-11-*" 2022-10* | sort -u | wc -l

Linux相关问答推荐

一个bash脚本,用于基于2列映射文件替换多个文件名中的模式

Shell 脚本程序 - 从日志(log)文件中过滤磁盘空间利用率超过 80% 的行

JSON 转义 CURL/JQ 输出

Docker 默认使用交换文件吗?

为什么 perf stat 不计算 cycles:u 在 BIOS 中禁用超线程的 Broadwell CPU 上?

用户级线程如何与内核级线程对话

Bash 更新 yaml 文件中的图像值

Azure Nvidia 中的 apt-update 给出公钥错误

bash 更有效的方法来转换奇数日期格式以被 linux 日期识别

使用 Dockerfile RUN 执行某些操作但忽略错误

如何计算制表符分隔的文本文件中字段的唯一值的数量?

在 C 中检测 64 位编译

我想为 Linux 内核做贡献

如何分析内存使用情况?

如何知道是否有足够的内存可以在 Linux 机器上部署新应用程序?

如果关键字触发然后执行命令,Shell 脚本来监视日志(log)文件?

*nix 系统上是否有与 COM 等效的功能?如果不是,那么 *nix 的可重用性方法是什么?

如何对 /dev/random 或 /dev/urandom 进行 base64 编码?

将标准输出作为命令行工具的文件名传递?

Linux 守护进程