我使用grep
从文件中提取了一些数字,假设它们是1 2 3 5 6 11 18
。要在1..20
中获取遗漏,请将其放入文件并使用comm
进行比较。
a='1 2 3 5 6 11 18'
printf '%d\n' $a | sort -u > 111
printf '%d\n' {1..20} | sort -u > 222
comm 111 222
rm 111 222
输出
1
10
11
12
13
14
15
16
17
18
19
2
20
3
4
5
6
7
8
9
没有保存到文件有更方便的方法吗?
答案 0 :(得分:3)
您可以迭代1到20之间的数字,然后使用正则表达式将每个数字与a
进行比较:
a='1 2 3 5 6 11 18'
for i in {1..20}; do
re="\\b$i\\b"
[[ "$a" =~ $re ]] || echo "$i"
done
正则表达式非常简单:\b
是word boundary,$i
扩展为1,2,...,20
以上内容将打印所有不在a
中的数字。