连续数字过滤

时间:2019-08-05 16:29:45

标签: filtering

我有一个带有很多数字组合的文本文件。 看起来像这样:

1 2 3 4 5 6

1 2 3 4 5 7

1 2 3 4 5 8

1 2 3 4 5 9

1 2 3 4 5 10

...

依此类推...

每行都有 6 个数字,每个数字之间都有一个空格。 数字从 1到37。

我需要一种方法来删除所有少于3个连续数字的行,例如:

1 2 3 13 28 35 不允许。

1 2 3 4 28 35 不允许。

1 2 3 4 5 35 不允许。

1 2 3 4 5 6 不允许。

1 7 8 9 24 30 也不允许。

1 3 5 7 10 11 将被允许。

5 8 14 23 30 37 也将被允许。

特殊示例:

1 2 9 15 16 32是允许的。

你明白我的意思...

因此,我需要一种方法,也许是代码或带有说明的使用方法。

谢谢!

1 个答案:

答案 0 :(得分:1)

使用以下awk命令:

awk '($1 + 1 != $2 || $2 + 1 != $3) && ($2 + 1 != $3 || $3 + 1 != $4) && ($3 + 1 != $4 || $4 + 1 != $5) && ($4 + 1 != $5 || $5 + 1 != $6)' < input_file