linux - 查找文件中的第一个重复行

标签 linux shell

我想在文本文件中找到第一个 重复行。

我通常在文件中查找重复行的方法是使用 uniq,它采用排序后的文件,所以我:

sort inputfile | uniq -c | sort -nr > outputfile

计算所有重复项并按降序打印。

通过排序然后使用 uniq,我丢失了原始文件中出现重复项的时间/位置,我现在只对哪一行是第一个重复项感兴趣。

有什么想法吗?

最佳答案

awk '{ if(seen[$0]) { print; exit } seen[$0] = 1 }' file

这将跟踪每一行,然后打印它之前看到的第一行。如果您想要行号,请同时打印 NR。

awk '{ if(seen[$0]) { print NR, $0; exit } seen[$0] = 1 }' file

关于linux - 查找文件中的第一个重复行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21445098/

相关文章:

linux - 无法链接 python 的共享库

linux - 从/dev/block/mmcblk0 和/dev/block/mmcblk0p1 读取的区别

macos - 使用 shell 脚本删除派生数据

linux - 使用 Echo 确定目录的长度

linux - 在 unix/linux 命令行中定义函数(例如 BASH)

linux - 如何使 libusb 库对另一个程序可见?

linux - 内核空间和用户空间进程识别

linux - 禁止通过IP服务器访问网站

linux - awk 中嵌套的 BEGIN-END block

linux - perl shell 命令变量错误