Com awk
e definindo FS para string vazia (o efeito de usar FS vazio é um comportamento indefinido por POSIX e dependendo de qual versão awk
você está usando, pode ser resultado diferente). Abaixo é testado no GNU awk
:
awk -F '' '{ is_sequential=0;
for (i=2; i<=NF; i++) { is_sequential+=($0 ~ $i-1 || $0 ~ $i+1)?1:0 }; }
!is_sequential{ print }' infile
estamos verificando cada número $i
para um número igual ao número-1 $i-1
ou número + 1 $i+1
em relação à linha inteira, o que significa que, se houver um número number-1
ou number+1
ou ambos vistos em uma linha, então descobrimos que há pelo menos dois números próximos um do outro (o primeiro, o número $i
em si e o próximo $i-1
ou $i+1
ou ambos (sequencial) e com Condição ternária irá incrementar o valor da variável é_sequencial caso contrário sempre será 0.
No próximo bloco is_sequential{ print }
, imprimimos a linha onde o valor está inalterado (o valor ainda é 0
, não há pelo menos dois números vistos que sejam sequenciais).