geekosaur já explicou por que sua primeira tentativa falhou. Aqui estão algumas dicas adicionais sobre o que você está tentando fazer.
Se você estiver procurando por um número como 42 , provavelmente desejará corresponder 042 , mas não 1042 ou 421 . Tudo que você precisa para conseguir isso é uma expressão regular mais chique. Assumindo que $newnumber contenha o número (inteiro, positivo, em notação decimal) sem zero à esquerda, procure por $newnumber precedido pelo início da linha ou por um caractere não dígito, e da mesma forma depois. 0* permite mais zeros à esquerda. A opção -E diz a grep que você está usando a sintaxe de expressão regular moderna (em oposição à sintaxe histórica, que é mais ousada e menos poderosa).
grep -E "(^|[^0-9])0*$newnumber(\$|^[0-9])" /path/to/file
Para analisar um número com potenciais zeros à esquerda, no bash, você pode usar $((10#$newnumber)) para forçar uma interpretação decimal. Em outras conchas, é um pouco mais complicado; há uma construção de shell para obter o valor de uma variável sem um prefixo específico ${var#prefix} e uma construção semelhante para sufixos ${var%suffix} , mas não é possível especificar "a sequência mais longa possível de 0 caracteres" como um prefixo para faixa. Mas isso pode ser feito em duas etapas: primeiro obtenha a parte de var que não é o zeros à esquerda e use isso como um prefixo para remover. A parte de var que não é o zeros à esquerda é seu sufixo mais longo que começa com um diferente de zero, que é ${var%%[!0]*} (o duplo % significa retirar o sufixo mais longo que corresponde ao padrão; % eliminaria o sufixo mais curto).
read number
number=${number#${number%%[!0]*}}
Outra observação: grep REGEXP /some/file pesquisa o arquivo /some/file . Se você quiser pesquisar todos os arquivos em um diretório, deixe o shell gerar a lista de arquivos: grep REGEXP /some/dir/* . Se você quiser pesquisar todos os arquivos em um diretório e seus subdiretórios recursivamente, passe a opção -r para grep para torná-la recursiva: grep -r REGEXP /some/dir .