假设我有一个如下文件(一个有序的,唯一的整数列表,每行一个):
1
3
4
5
8
9
10
Run Code Online (Sandbox Code Playgroud)
我想要以下输出(即列表中缺少的整数):
2
6
7
Run Code Online (Sandbox Code Playgroud)
我怎样才能在bash终端中实现这一点(使用awk或类似的解决方案,最好是单行程)?
使用awk你可以这样做:
awk '{for(i=p+1; i<$1; i++) print i} {p=$1}' file
2
6
7
Run Code Online (Sandbox Code Playgroud)
使用seq和grep:
seq $(head -n1 file) $(tail -n1 file) | grep -vwFf file -
Run Code Online (Sandbox Code Playgroud)
seq创建完整的序列,grep从中删除文件中存在的行。