我遇到了一个问题,需要找出一定范围内缺失的数值,而且这个范围对于连续的行也是不同的。
输入
673 673 673 676 676 680 2667 2667 2668 2670 2671 2674
输出结果应该像这样
674 675 677 678 679 2669 2672 2673
这只是其中的一部分,行值可能会更多。如果需要澄清,请让我知道。
使用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
Bash解决方案:
cat file_of_numbers| xargs -n2 seq | sort -nu