I\'m deeply puzzled by the way grep seems to parse a regex:
$ echo \"@NS500287\" | grep \'^@NS500[0-9]{3}\' #nothing $ echo \"@NS500287\" | grep \'^@NS500[0-
Instead do
echo '@NS500287' | egrep '^@NS500[0-9]{3}' # ^ # / # notice ---