Isso deve ser feito:
grep -xvFf file.txt <(printf '%s\n' 010.123.{32..33}.{0001..9999})
-
printf '%s\n' 010.123.{32..33}.{0001..9999}
gera todos os padrões possíveis (altere os intervalos para atender à sua necessidade), a expansão de chaves,{start..end}
, está fazendo a expansão do intervalo aqui -
a saída é exibida para
grep
como um descritor de arquivo, feito por substituição de processo<()
grep
opções:
-
-x
combina toda a linha -
-v
inverte a correspondência -
-F
trata padrão (s) literalmente, nenhuma expansão de Regex é feita -
-f
recebe o (s) padrão (s) de entrada do arquivo seguindo esta opção
Exemplo:
% cat file.txt
010.123.32.0001
010.123.32.0021
010.123.33.0001
010.123.33.9991
010.123.32.9012
010.123.33.0005
% grep -xFf file.txt <(printf '%s\n' 010.123.{32..33}.{0001..9999})
010.123.32.0001
010.123.32.0021
010.123.32.9012
010.123.33.0001
010.123.33.0005
010.123.33.9991
% grep -xvFf file.txt <(printf '%s\n' 010.123.{32..33}.{0001..9999})
010.123.32.0002
010.123.32.0003
010.123.32.0004
010.123.32.0005
010.123.32.0006
010.123.32.0007
010.123.32.0008
010.123.32.0009
010.123.32.0010
010.123.32.0011
<truncated>