bash - 如何在 unix 终端的唯一顺序列表(每行一个)中找到丢失的整数?

标签 bash unix awk

假设我有一个文件如下(一个排序的、唯一的整数列表,每行一个):

1
3
4
5
8
9
10

我想要以下输出(即列表中缺少的整数):

2
6
7

我如何在 bash 终端中完成此操作(使用 awk 或类似的解决方案,最好是单行程序)?

最佳答案

使用 awk 你可以这样做:

awk '{for(i=p+1; i<$1; i++) print i} {p=$1}' file

2
6
7

解释:

  • {p = $1}:变量 p 包含先前记录的值
  • {for ...}:我们从 p+1 循环到当前行的值(不包括当前值)并打印每个基本上是缺失值的值

关于bash - 如何在 unix 终端的唯一顺序列表(每行一个)中找到丢失的整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38491676/

相关文章:

bash - 在另一个目录中建立链接时符号链接(symbolic link)不起作用?

javascript - 如何替换最后出现的逗号

linux - 目录不可写吗

bash - 带有千位分隔符的 BASH 中的数字格式

linux - 使用 args 从分隔文件中捕获列

awk - 有选择地删除小数位的命令

linux - 获取一个字段的最后 n 个字符并在 Linux 中完成字符串的第二个字段

ruby - 如何持续监控shell命令的输出?我应该使用 Bash 还是 Ruby?

C++ float 数组维度

linux - 从目录打开最新文本文件的脚本