Sua variável $pattern contém espaços - ou talvez um% espúrio^M / CR / \r no final, se accts.csv vier de uma máquina Windows.
Você não pode ver os espaços com echo $pattern , porque a variável não está entre aspas (como na chamada ao grep), e por isso é bem dividida e aparada pelo mecanismo IFS. Tente algo como echo "{$pattern}" .
Você deve aparar você mesmo:
$ pattern=$(sed 's/[ \r]//g;q' accts.csv)