Você poderia usar
grep -E "^.{4}.?.?.?.?.?.?.?$pattern"
onde $pattern é a entrada do usuário, quero dizer, em algo como
$ echo "enter a pattern: "; read pattern; grep -E "^.{4}.?.?.?.?.?.?.?$pattern" file
enter a pattern:
6314
commA6314 ifosfamide 30 12
^.{4}.?.?.?.?.?.?.? que são os primeiros 4 caracteres bloqueados, então os próximos 7 caracteres são opcionais, significando que se o padrão for apenas um caractere e estiver na 12ª posição, ele será encontrado e se tiver 7 caracteres e será iniciado a partir do 5ª posição, ainda seria encontrado.
-
^início da linha -
.qualquer caractere -
{4}quatro do caractere anterior -
?zero ou um dos caracteres anteriores