【发布时间】:2020-07-28 20:34:55
【问题描述】:
我有一个数据文件,其中包含一堆乱序数字,每行一个。我想看看我遗漏了哪些数字(如果有)。
示例数据:
1
2
2
3
4
2
6
7
8
3
最佳尝试:
cat myfile | sort -n -u | awk 'NR!=$0'
# output:
6
7
8
这有点工作。它打印出行号与该行内容不匹配的所有数字,这至少告诉我我错过了 5,但只能在之后打印所有数字。
在 awk/sed/bash/sort/etc 中有没有好的方法可以做到这一点,还是我必须拔出 python?
我还想查找文件中的重复项及其数量,但cat file | sort -n | uniq -c -d 似乎非常适合。
【问题讨论】:
-
使用每个值作为 awk 数组中的键。还将最大值放入变量中。最后从1循环到最高,检查每个值是否在数组中。
-
@anubhava,在这种情况下,是的。不过,我认为我的答案适用于任何起始数字。