Pelo que entendi, esses números são todos inteiros. A idéia é combinar e exibir entradas que contenham esses números, mas 256, precedidos ou não pelos zeros iniciais.
Seus números devem ser em uma única linha :
grep "^[0-9][0-9]*$" | grep -v "^0*256$"
( grep -v
exclui as linhas que correspondem em vez de incluí-las)
Ouput:
$ echo "12" | grep "^[0-9][0-9]*$" | grep -v "^0*256$"
12
$ echo "2567" | grep "^[0-9][0-9]*$" | grep -v "^0*256$"
2567
$ echo "256" | grep "^[0-9][0-9]*$" | grep -v "^0*256$"
$ echo "0256" | grep "^[0-9][0-9]*$" | grep -v "^0*256$"
$ echo "something" | grep "^[0-9][0-9]*$" | grep -v "^0*256$"
Se você estiver usando outro separador:
Por exemplo, você pode pré-processar suas entradas usando sed
para torná-las compatíveis com os comandos grep
acima. Aqui, com uma entrada delimitada por coma, onde cada coma é substituído por um avanço de linha ( \n
):
sed -r 's/,/\n/g'
Saída:
$ echo "2567,255,256,12,something,05,0256" | sed -r 's/,/\n/g' | grep "^[0-9][0-9]*$" | grep -v "^0*256$"
2567
255
12
05
E, finalmente, os números devem ser misturados com outros caracteres aleatórios:
Nesse caso, uma etapa extra permite remover todos os caracteres não numéricos:
sed -r 's/[^0-9]//g'
Saída:
$ echo "2567,255,256,mama256a,papa1812b,something,05,0256" | sed -r 's/,/\n/g' | sed -r 's/[^0-9]//g' | grep "^[0-9][0-9]*$" | grep -v "^0*256$"
2567
255
1812
05