使用任何脚本语言(Perl、Python或Shell脚本)查找范围内的缺失值

7

我遇到了一个问题,需要找出一定范围内缺失的数值,而且这个范围对于连续的行也是不同的。

输入

673 673 673 676 676 680
2667 2667 2668 2670 2671 2674

输出结果应该像这样

674 675 677 678 679
2669 2672 2673

这只是其中的一部分,行值可能会更多。如果需要澄清,请让我知道。

12个回答

0

使用Bash、sort、uniq和jot(Mac OS X)的Shell解决方案:

numbers="673 673 673 676 676 680"
numbers="2667 2667 2668 2670 2671 2674"
sorted=($(IFS=$'\n' echo "${numbers}" | tr " " '\n' | sort -u ))
low=${sorted[0]}
high=${sorted[@]: -1}
( printf "%s\n" "${sorted[@]}"; jot $((${high} - ${low} + 1)) ${low} ${high} ) | sort | uniq -u

0

Bash解决方案:

cat file_of_numbers| xargs -n2 seq | sort -nu

这将列出从最小值到最大值之间的所有数字,而不仅仅是缺失的数字。 - Lars Haugseth

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接